So überprüfen Sie, ob ein int eine Null ist

110

Ich habe ein Objekt namens Person.

es hat mehrere Attribute;

int id;
String name;

Ich setze ein Personenobjekt wie Person p = new Person(1,"Joe");.

1.) Ich muss überprüfen, ob das Objekt nicht null ist. Ist der folgende Ausdruck korrekt?

if (person == null){
}

Or


if(person.equals(null))

2.) Ich muss wissen, ob die ID ein Int enthält.

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

Aber Java erlaubt es nicht. Wie kann ich diese Prüfung durchführen?

Sharon Hwk
quelle
10
Nicht nur Java. Ein primitiver Typ kann nirgendwo null sein.
Rohit Jain
2
Ja, der Standardwert von a intist 0?
Sharon Hwk
1
@sharon. Ja, es ist 0. Sie können also 0stattdessen die Prüfung mit durchführen . Wenn Sie die Nullprüfung durchführen möchten. Verwenden Sie dazu den Integer-Wrapper.
Rohit Jain
3
Es ist nicht immer eine gute Idee, ein int zur Darstellung eines Identifikationscodes zu verwenden, da Sie es nicht als wahre Zahl verwenden - Sie führen damit weder Addition noch Subtraktion oder andere mathematische Operationen durch. Verwenden Sie stattdessen einen String.
Luftkissenfahrzeug voller Aale

Antworten:

184

An intist nicht null, es kann sein, 0wenn es nicht initialisiert wird.

Wenn Sie möchten, dass eine Ganzzahl null sein kann, müssen Sie Integerstattdessen verwenden int.

Integer id;
String name;

public Integer getId() { return id; }

Außerdem kann die Aussage if(person.equals(null))nicht wahr sein, denn wenn personnull ist, NullPointerExceptionwird ein geworfen. Der richtige Ausdruck ist alsoif (person == null)

Alex
quelle
@sharonHwk "person == null" sollte die bessere Option sein. Wenn person null ist, gibt es keine "gleich" -Methode, dann wird "person.equals (null)" ausgelöst.
CodingFanSteve
"Ein int ist nicht null, es kann 0 sein, wenn es nicht initialisiert wird." Das ist nicht 100% richtig, ein int als lokale Variable wird nicht initialisiert.
Emerica
Da die lokale Variable nicht uninitialisiert werden kann, ist sie natürlich ungültiger Code. Java lässt dies nicht zu, wie in der Spezifikation angegeben.
Alex
48

Grundelemente haben keinen Nullwert. Standardmäßig ist für ein int 0.

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

Standardwerte für Grundelemente 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

Objekte haben den Standardwert null.

String (oder ein beliebiges Objekt) ---> null

1.) Ich muss überprüfen, ob das Objekt nicht null ist. Ist der folgende Ausdruck korrekt?

if (person == null){
}

Der obige Code prüft, ob die Person null ist. du musst tun

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

und

if(person.equals(null))

Der obige Code würde eine NullPointerException auslösen, wenn die Person null ist.

PermGenError
quelle
Vielen Dank, das ist sehr nützlich.
Sharon Hwk
14

Ein Grundelement intkann nicht null sein. Wenn Sie null benötigen, verwenden Sie Integerstattdessen.

Zutty
quelle
3

1.) Ich muss überprüfen, ob das Objekt nicht null ist. Ist der folgende Ausdruck korrekt?

if (person == null) {}

JA . So überprüfen Sie, ob es sich um ein Objekt handelt null.

2.) Ich muss wissen, ob die ID ein Int enthält.

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

NEIN Da idals primitiv definiert ist int, wird es standardmäßig mit initialisiert 0und wird es niemals sein null. Es ist nicht erforderlich, primitive Typen zu überprüfen, wenn sie null sind. Sie werden niemals null sein. Wenn Sie möchten, können Sie mit dem Standardwert 0als vergleichen if(person.getId()==0){}.

Yogendra Singh
quelle
0

Sie müssen auf Ihre Klassenattribute zugreifen.

Um darauf zugreifen zu können, müssen Sie Folgendes tun:

person.id
person.name

wo

Person

ist eine Instanz Ihrer Klasse Person.

Dies kann erfolgen, wenn auf die Attribute zugegriffen werden kann. Wenn nicht, müssen Sie Setter und Getter verwenden ...

Melli-182
quelle
@RohitJain Ich sage das nicht, ich sage, dass es nicht richtig ist, nach Person zu fragen == nul, wenn er wissen will, ob die ID "null" ist. Aufgrund der Tatsache, dass id ein int ist, kann er nicht so fragen, wie Sie es vorschlagen ...
melli-182
0

Sie können verwenden

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

zusätzlich zum regulären Ansatz

person.getId() == 0
böser Kodierer
quelle
0

In Java gibt es keine Nullwerte für primitive Datentypen. Wenn Sie Null aktivieren müssen, verwenden Sie die Integer-Klasse anstelle des primitiven Typs. Sie müssen sich keine Gedanken über Datentypunterschiede machen. Java konvertiert int primitive Typdaten in Integer. Wenn es um den Speicher geht, benötigt Integer mehr Speicher als int. Aber der Unterschied der Speicherzuordnung ist nicht zu berücksichtigen.

In diesem Fall müssen Sie Inter anstelle von int verwenden

Probieren Sie das folgende Snippet aus und sehen Sie sich das Beispiel für weitere Informationen an.

Integer id;
String name;

//Refer this example
    Integer val = 0;

`

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

`

Sie können auch Null wie folgt zuweisen:

val = null;
Chameera W. Ashan
quelle