Hogy megértsük, mit jelent a null a Java nyelvben, nézzünk meg egy analógiát a számokkal: a 0 szám valaminek a hiányát szimbolizálja, a null pedig ugyanazt jelenti, ha referencia adattípusokról van szó. Ha egy referencia típusú mezőhöz (például String , Object vagy StringBuilder ) nincs explicit hozzárendelve érték, akkor a primitív típusokhoz hasonlóan alapértelmezett értéket kap, és ez az érték null :
Kód | Konzol kimenet |
---|---|
|
0
null |
De ha így deklarálsz egy tömböt:
String[] strings = new String[12];
létrejön egy tömb, amely 12 elemet tartalmaz, és mindegyik nulla lesz :
Kód | Konzol kimenet |
---|---|
|
0. elem: null
1. elem: null 2. elem: null 3. elem: null 4. elem: null 5. elem: null 6. elem: null 7. elem: null 8. elem: null 9. elem: null 10. elem: null 11. elem: null |
Amint láthatja, ha egy karakterlánccal összefűzzük, a null értékből a " null " karakterlánc lesz . Ennek ellenére, ha meghívja rajta a toString() metódust, így:
String[] strings = null;
System.out.println(strings.toString());
akkor kap egy NullPointerException-t (a kivételeket később részletesen tárgyaljuk). Ugyanez történik, ha bármilyen más metódust nullán próbál meg hívni ( a kivétel a statikus metódusok, amelyeket hamarosan megismerhet):
public static void main(String[] args) {
StringBuilder sb = null;
sb.append("test"); // This will compile, but there will be a runtime error
}
A null többek között egy fenntartott kulcsszó (például public vagy static ), így nem hozhat létre null nevű változót, metódust vagy osztályt . A többihez hasonlóan ez a kulcsszó is megkülönbözteti a kis- és nagybetűket (talán észrevetted, hogy mindenhol nullát írunk kisbetűvel). Azt jelenti:
String firstName = Null; // Compilation error
String secondName = NULL; // Compilation error
String fullName = null; // This will compile
Nézzük meg, mit tehetsz még és mit nem a nullszal :
-
Bármely hivatkozáshoz null értéket rendelhet :
StringBuilder sb = null;
-
null bármely referenciatípusra átadható:
String s = (String) null; // This will compile, but doing this doesn't make any sense :)
-
null nem rendelhető primitív változóhoz:
int i = null; // This won't compile
-
null összehasonlítható az == és != használatával
-
null == A null true értéket ad vissza
Az előző leckékben arról beszéltünk, hogy a Java-ban minden objektum, és minden objektumnak van típusa.
Mit mondhatunk a nulláról ebből a szempontból? A null egy bizonyos típusú literál, és ennek a típusnak nincs neve. És mivel ennek a típusnak nincs neve, lehetetlen ilyen típusú változót deklarálni, vagy átküldeni rá. Így a null az egyetlen képviselője ennek a névtelen típusnak. A gyakorlatban figyelmen kívül hagyhatjuk ezt a típust, és a nullra úgy gondolhatunk , mint egy speciális literálra, amely bármely referenciaváltozóhoz hozzárendelhető.
Dolgok, amikre emlékezni kell:
- null a referencia adattípusok alapértelmezett értéke
- a null jelentése "nincs érték"
- Ha olyan objektumon hívunk meg egy metódust, amelynek értéke null , a kód le lesz fordítva, de futás közben egy NullPointerException-t kapunk .
GO TO FULL VERSION