Um zu verstehen, was null in Java bedeutet, schauen wir uns eine Analogie zu Zahlen an: Die Zahl 0 symbolisiert die Abwesenheit von etwas, und null bedeutet dasselbe, wenn es um Referenzdatentypen geht. Wenn einem Feld eines Referenztyps (z. B. String , Object oder StringBuilder ) nicht explizit ein Wert zugewiesen wird, erhält es analog zu primitiven Typen einen Standardwert, und dieser Wert ist null :

Code Konsolenausgabe
public class Solution {

    public static int i;
    public static String s;

    public static void main(String[] args) {
        System.out.println(i);
        System.out.println(s);
    }
}
0
null

Aber wenn Sie ein Array wie dieses deklarieren:

String[] strings = new String[12];

Es wird ein Array mit 12 Elementen erstellt, die alle null sind :

Code Konsolenausgabe
public class Solution {
    public static void main(String[] args) {
        String[] strings = new String[12];

        for (int i = 0; i < strings.length; i++) {
            System.out.println("Element " + i + ":" + strings[i]);
        }
    }
}
Element 0: null
Element 1: null
Element 2: null
Element 3: null
Element 4: null
Element 5: null Element
6: null
Element 7: null
Element 8: null
Element 9: null
Element 10: null
Element 11: null

Wie Sie sehen können, wird der Wert null bei Verkettung mit einer Zeichenfolge zur Zeichenfolge „ null “. Wenn Sie jedoch die Methode toString() darauf aufrufen, sieht das folgendermaßen aus:

String[] strings = null;
System.out.println(strings.toString());

dann erhalten Sie eine NullPointerException (wir werden später ausführlicher auf Ausnahmen eingehen). Das Gleiche passiert, wenn Sie versuchen, eine andere Methode für null aufzurufen (Ausnahme sind statische Methoden, die Sie gleich kennenlernen werden):

public static void main(String[] args) {
    StringBuilder sb = null;
    sb.append("test"); // This will compile, but there will be a runtime error
}

null ist unter anderem ein reserviertes Schlüsselwort (wie public oder static ), daher können Sie keine Variable, Methode oder Klasse mit dem Namen null erstellen . Wie bei den anderen Schlüsselwörtern wird auch bei diesem Schlüsselwort die Groß-/Kleinschreibung beachtet (Sie haben vielleicht bemerkt, dass wir überall null in Kleinbuchstaben schreiben). Das bedeutet:

String firstName = Null; // Compilation error
String secondName = NULL; // Compilation error
String fullName = null; // This will compile

Schauen wir uns an, was Sie mit null sonst noch tun können und was nicht :

  • Sie können jeder Referenz null zuweisen:

    StringBuilder sb = null;
  • null kann in jeden Referenztyp umgewandelt werden:

    String s = (String) null; // This will compile, but doing this doesn't make any sense :)
  • null kann keiner primitiven Variablen zugewiesen werden:

    int i = null; // This won't compile
  • null kann mit == und != verglichen werden

  • null == null gibt true zurück

In früheren Lektionen haben wir darüber gesprochen, dass in Java alles ein Objekt ist und jedes Objekt einen Typ hat.

Was können wir in dieser Hinsicht über null sagen ? null ist ein Literal eines bestimmten Typs, und dieser Typ hat keinen Namen. Und da dieser Typ keinen Namen hat, ist es unmöglich, eine Variable dieses Typs zu deklarieren oder in sie umzuwandeln. Daher ist null der einzige Vertreter dieses unbenannten Typs. In der Praxis können wir diesen Typ ignorieren und uns null als ein spezielles Literal vorstellen, das jeder Referenzvariablen zugewiesen werden kann.

Dinge, die Sie sich merken sollten:

  • null ist der Standardwert für Referenzdatentypen
  • null bedeutet „kein Wert“
  • Wenn wir eine Methode für ein Objekt aufrufen, dessen Wert null ist , wird der Code kompiliert, aber zur Laufzeit erhalten wir eine NullPointerException .