Cómo comprobar si un int es nulo

110

Tengo un objeto llamado Person.

tiene varios atributos en él;

int id;
String name;

puse un objeto de persona como Person p = new Person(1,"Joe");.

1.) Necesito comprobar si el objeto no es nulo; ¿Es correcta la siguiente expresión?

if (person == null){
}

Or


if(person.equals(null))

2.) Necesito saber si el ID contiene un Int.

if(person.getId()==null){} 

Pero java no lo permite. ¿Cómo puedo hacer esta verificación?

Sharon Hwk
fuente
10
No solo Java. Un tipo primitivo no puede ser nulo en ninguna parte.
Rohit Jain
2
sí, el valor predeterminado de un intes 0?
Sharon Hwk
1
@sharon. Sí, es 0. Entonces, puedes hacer la verificación con 0. Si desea hacer la verificación nula. Use la envoltura Integer para eso.
Rohit Jain
3
No siempre es una buena idea usar un int para representar un código de identificación, ya que no lo está usando como un número verdadero; no hace sumas ni restas u otras operaciones matemáticas con él. Considere usar una cadena en su lugar.
Aerodeslizador lleno de anguilas

Respuestas:

184

An intno es nulo, puede ser0 si no se inicializa.

Si desea que un entero pueda ser nulo, debe usar en Integerlugar de int.

Integer id;
String name;

public Integer getId() { return id; }

Además, la declaración if(person.equals(null))no puede ser verdadera, porque si persones nula, se NullPointerExceptionlanzará a. Entonces la expresión correcta esif (person == null)

Alex
fuente
@sharonHwk "person == null" debería ser la mejor opción. Si persona es nula, no tendrá un método "igual", entonces se arrojará "persona.equals (nulo)".
CodingFanSteve
"Un int no es nulo, puede ser 0 si no se inicializa". eso no es 100% correcto, un int como variable local no se inicializará.
Emerica
Por supuesto, para la variable local no se puede anular la inicialización, es un código inválido, Java no lo permitirá, como se declara en su especificación.
Alex
48

las primitivas no tienen valor nulo. el valor predeterminado para un int es 0.

if(person.getId()==0){}

Valores predeterminados para primitivas en java:

Data Type   Default Value (for fields)

byte                0
short               0
int                 0
long            0L
float           0.0f
double          0.0d
char            '\u0000'
boolean         false

Los objetos tienen nulo como valor predeterminado.

Cadena (o cualquier objeto) ---> nulo

1.) Necesito comprobar si el objeto no es nulo; ¿Es correcta la siguiente expresión?

if (person == null){
}

la pieza de código anterior verifica si la persona es nula. necesitas hacer

if (person != null){ // checks if person is not null
}

y

if(person.equals(null))

El código anterior arrojaría NullPointerException cuando la persona es nula.

PermGenError
fuente
Gracias, esto es muy útil.
Sharon Hwk
14

Un primitivo intno puede ser nulo. Si necesita null, utilice Integeren su lugar.

Zutty
fuente
3

1.) Necesito comprobar si el objeto no es nulo; ¿Es correcta la siguiente expresión?

si (persona == nulo) {}

SI . Así es como verificas si el objeto es null.

2.) Necesito saber si el ID contiene un Int.

if (person.getId () == null) {}

NO Dado que idse define como primitivo int, se inicializará por defecto con 0y nunca lo será null. No es necesario comprobar los tipos primitivos, si son nulos. Nunca serán nulos. Si lo desea, puede comparar con el valor predeterminado 0como if(person.getId()==0){}.

Yogendra Singh
fuente
0

Tienes que acceder a los atributos de tu clase.

Para acceder a sus atributos, debe hacer:

person.id
person.name

dónde

persona

es una instancia de tu clase Person.

Esto se puede hacer si se puede acceder a los atributos, si no, debe usar setters y getters ...

melli-182
fuente
@RohitJain no estoy diciendo eso, estoy diciendo que no es correcto preguntar por person == nul si quiere saber si la identificación es "nula". Debido al hecho de que id es un int, no puede preguntar de la manera que usted sugiere ...
melli-182
0

Puedes usar

if (person == null || String.valueOf(person.getId() == null)) 

además del enfoque regular

person.getId() == 0
evilcoder
fuente
0

En Java no hay valores nulos para tipos de datos primitivos. Si necesita marcar Null, use Integer Class en lugar de primitive type. No necesita preocuparse por la diferencia de tipos de datos. Java convierte datos de tipo primitivo int a Integer. Cuando se trata de la memoria, Integer ocupa más memoria que int. Pero la diferencia de asignación de memoria, nada que considerar.

En este caso debes usar Inter en lugar de int

Pruebe el siguiente fragmento y vea el ejemplo para obtener más información,

Integer id;
String name;

//Refer this example
    Integer val = 0;

'

if (val != null){
System.out.println("value is not null");
}

'

También puede asignar Null como se muestra a continuación,

val = null;
Chameera W. Ashan
fuente