2012-12-06 17 views
65

Ho un oggetto chiamato Person.Come verificare se un int è un nullo

ha diversi attributi in esso;

int id; 
String name; 

ho impostato un oggetto persona come .

1.) Devo controllare se l'oggetto non è nullo; La seguente espressione è corretta;

if (person == null){ 
} 

Or 


if(person.equals(null)) 

2.) Ho bisogno di sapere se l'ID contiene un Int.

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

Ma java non lo consente. Come posso fare questo controllo?

+6

Non solo Java. Un tipo primitivo non può essere nullo da nessuna parte. –

+0

sì, il valore predefinito di un 'int' è' 0'? –

+2

Sì Sharon, è 0. –

risposta

114

Un int non è nullo, potrebbe essere 0 se non inizializzato.

Se si desidera che un numero intero sia nullo, è necessario utilizzare Integer anziché int.

Oltre alla dichiarazione if(person.equals(null)) non può essere vero, perché se person è nullo, poi saranno gettati un NullPointerException. Quindi l'espressione corretta è if (person == null)

+0

Puoi rispondere anche alla domanda 1. Quelli sono corretti? –

8

Un primitivo int non può essere nullo. Se hai bisogno di null, usa invece Integer.

31

le primitive non hanno valore nullo. predefinito avere per un int è 0.

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

I valori di default per le primitive in 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 

oggetti hanno null come valore di default.

stringa (o qualsiasi altro oggetto) ---> Null

1.) devo controllare se l'oggetto non è nullo; La seguente espressione è corretta;

if (person == null){ 
} 

il pezzo di codice controlla sopra se la persona è nullo. è necessario fare

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

e

if(person.equals(null)) 

Il codice di cui sopra avrebbe gettato NullPointerException quando persona è nullo.

+0

Grazie, questo è molto utile. –

+0

@sharonHwk siete i benvenuti. :) – PermGenError

0

Devi accedere ai tuoi atributes di classe.

Per accedere ad esso atributes, quello che dovete fare:

person.id 
person.name 

dove

persona

è un'istanza della classe Persona.

Questo può essere fatto se i attibutes possibile accedere, in caso contrario, è necessario utilizzare setter e getter ...

+0

@RohitJain non sto dicendo questo, sto dicendo che non è corretto chiedere la persona == nul se vuole sapere se l'id è "null". A causa del fatto che id è un int, non può chiedere nel modo in cui stai suggerendo ... –

2

1.) ho bisogno di controllare se l'oggetto non è nullo; La seguente espressione è corretta;

se (persona == null) {}

SI. In questo modo si controlla se l'oggetto è null.

2.) Ho bisogno di sapere se l'ID contiene un Int.

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

NO Da id è definito come primitivo int, sarà predefinito inizializzato con 0 e non sarà mai null. Non è necessario controllare i tipi primitivi, se sono nulli. Non saranno mai nulli. Se lo desideri, puoi confrontare il valore predefinito 0 come if(person.getId()==0){}.

-1

È possibile utilizzare

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

oltre al metodo ordinario

person.getId() == 0 
Problemi correlati