Concaténation de chaînes nulles en Java
En Java, la concaténation de chaînes nulles peut sembler contre-intuitive, conduisant à l'attente d'une NullPointerException. Cependant, cette opération s'exécute avec succès, ce qui donne une chaîne contenant "null" suivie de la chaîne concaténée.
Pourquoi cela fonctionne-t-il ?
Selon la spécification du langage Java (JLS) 8, § 15.18.1, les références nulles sont explicitement converties en chaîne « null » lors de la concaténation de chaînes. Cette conversion se produit avant tout appel de méthode, garantissant que les NullPointerExceptions ne sont pas levées.
Comment ça marche ?
Le compilateur Java transforme l'expression de concaténation en une séquence équivalente de appels de méthode. Dans le cas de s = s "hello", le compilateur génère un code similaire à :
s = new StringBuilder(String.valueOf(s)).append("hello").toString();
La méthode append de StringBuilder gère les arguments nuls avec élégance. Si null est le premier argument, String.valueOf() est invoqué pour le convertir en chaîne.
Alternativement, l'expression s = "hello" s serait transformée en :
s = new StringBuilder("hello").append(s).toString();
Dans ce cas, la méthode append prend null comme deuxième argument et le délègue à String.valueOf().
Remarque :
Les compilateurs Java peuvent optimiser la concaténation de chaînes différemment pour améliorer les performances, en utilisant des techniques telles que le pooling StringBuilder. Par conséquent, le code équivalent exact généré peut varier en fonction du compilateur utilisé.
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!