Java-ban a null literál egy érték hiányát jelöli.
A primitív adattípusoknak Java-ban mindig van alapértelmezett értékük, ezért soha nem lehetnek null értékűek.
A konvenció szerint kisbetűvel kezdődnek, például int.
A referenciatípusok egy objektum memóriacímét tárolják, és az értékük lehet null.
Általában nagybetűvel kezdődnek, például String.
Ha egy primitív változónak null értéket próbálsz adni, az fordítási idejű hibát eredményez, mert a változó mindig a hozzá rendelt típus alapértelmezett értékét tárolja.
// Throws compile time error stating the required type is int, but null was provided
int number = null;
Egy referenciaváltozónak viszont adhatsz null értéket, ez nem eredményez fordítási idejű hibát, mert a referenciaváltozók lehetnek null értékűek.
//No error will occur as the String variable str is nullable
String str = null;
Ha egy null értékű referenciaváltozóhoz próbálsz hozzáférni, a kód ugyan szépen lefordul, futásidőben viszont NullPointerException keletkezik.
int[] arr = null;
// Throws NullPointerException at runtime
arr.length;
A NullPointerException akkor keletkezik, amikor olyan referenciaváltozóhoz próbálsz hozzáférni, amely null, pedig egy objektumra lenne szükség.
Ahhoz, hogy biztonságosan dolgozz null értékű változókkal, használat előtt ellenőrizd, hogy az érték nem null-e. Erre egyenlőségoperátorokat használhatsz, például a == vagy a != operátort:
int[] arr = null;
if(arr != null) {
System.out.println(arr.length);
} else {
//Perform an alternate action when arr is null
}