Maison >Java >javaDidacticiel >Pourquoi la concaténation d'une chaîne nulle en Java ne génère-t-elle pas d'exception NullPointerException ?
En Java, la concaténation d'une chaîne nulle avec une autre chaîne ne génère pas d'exception NullPointerException, comme on pourrait le faire attendre. Au lieu de cela, le résultat est une nouvelle chaîne avec "null" ajouté au début.
Selon la spécification du langage Java (JLS ):
"Si la référence [à la chaîne nulle] est nulle, elle est convertie en la chaîne 'null' (quatre caractères ASCII n, u, l, l)."
Par conséquent, la chaîne nulle est automatiquement convertie en "null" avant que la concaténation n'ait lieu.
Le Le compilateur optimise la concaténation des chaînes pour améliorer les performances. Pour ce faire, il utilise un objet StringBuilder pour accumuler les résultats de la concaténation.
Lorsqu'il rencontre une chaîne nulle :
Considérez le code suivant :
String s = null; s = s + "hello"; System.out.println(s); // prints "nullhello"
Le compilateur optimise ce code dans l'équivalent suivant :
s = new StringBuilder(String.valueOf(s)).append("hello").toString();
Puisque s est null, String.valueOf(s) renvoie "null", qui est ensuite ajouté au StringBuilder et converti en chaîne.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!