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?


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)


@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.


Gracias, esto es muy útil.
Sharon Hwk

14

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


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){}.


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 ...


@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

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;
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.