In Java wird das null-Literal verwendet, um das Fehlen eines Werts auszudrücken.
Primitive Datentypen haben in Java alle einen Standardwert und können daher niemals null sein.
Konventionsgemäß beginnen sie mit einem Kleinbuchstaben, z. B. int.
Referenztypen enthalten die Speicheradresse eines Objekts und können den Wert null haben.
Sie beginnen in der Regel mit einem Großbuchstaben, z. B. String.
Wenn du versuchst, einer primitiven Variable den Wert null zuzuweisen, führt das zu einem Kompilierfehler, denn die Variable enthält immer einen Standardwert des zugewiesenen Typs.
// Throws compile time error stating the required type is int, but null was provided
int number = null;
Wenn du einer Referenzvariable den Wert null zuweist, führt das nicht zu einem Kompilierfehler, denn Referenzvariablen dürfen null sein.
//No error will occur as the String variable str is nullable
String str = null;
Der Zugriff auf eine Referenzvariable mit dem Wert null lässt sich zwar problemlos kompilieren, führt aber zur Laufzeit dazu, dass eine NullPointerException ausgelöst wird.
int[] arr = null;
// Throws NullPointerException at runtime
arr.length;
Eine NullPointerException wird ausgelöst, wenn du versuchst, auf eine Referenzvariable zuzugreifen, die null ist, aber ein Objekt erfordert.
Um sicher mit nullbaren Werten zu arbeiten, solltest du prüfen, ob sie null sind, bevor du sie verwendest. Das geht mit Gleichheitsoperatoren wie == oder !=:
int[] arr = null;
if(arr != null) {
System.out.println(arr.length);
} else {
//Perform an alternate action when arr is null
}