En Java, le littéral null sert à représenter l'absence de valeur.
Les types de données primitifs en Java ont tous une valeur par défaut et ne peuvent donc jamais être null.
Par convention, ils commencent par une lettre minuscule, par exemple int.
Les types de référence contiennent l'adresse mémoire d'un objet et peuvent avoir une valeur null.
Ils commencent généralement par une lettre majuscule, par exemple String.
Tenter d'affecter une valeur null à une variable primitive entraîne une erreur de compilation, car la variable contient toujours une valeur par défaut du type affecté.
// Throws compile time error stating the required type is int, but null was provided
int number = null;
Affecter une valeur null à une variable de référence ne provoque pas d'erreur de compilation, car les variables de référence acceptent la valeur null.
//No error will occur as the String variable str is nullable
String str = null;
Bien que l'accès à une variable de référence qui a une valeur null se compile sans problème, cela entraîne le lancement d'une NullPointerException à l'exécution.
int[] arr = null;
// Throws NullPointerException at runtime
arr.length;
Une NullPointerException est levée lorsqu'on essaie d'accéder à une variable de référence qui est null alors qu'un objet est requis.
Pour manipuler sans risque des valeurs qui peuvent être null, il faut vérifier si elles sont null avant de les utiliser, ce qui peut se faire à l'aide des opérateurs d'égalité tels que == ou != :
int[] arr = null;
if(arr != null) {
System.out.println(arr.length);
} else {
//Perform an alternate action when arr is null
}