Que si la chaine est définie implicitement, style "test" dans :
String a ="test";
String b ="test";
if(a==b){
// oui :o)
}
Alors cette chaine sera membre du pool de constante, et l'on pourra tester avec joie un == entre les deux, car il n'existe qu'une seule occurence d'une instance de String ayant la même valeur dans le pool. Ainsi , a et b pointant sur le même objet, le test sur les références sera vrai ;-)
Pour ajouter une chaine explicite au pool de constante on peut utiliser la methode .intern(), qui retourne une référence sur une chaine identique mais présente dans le pool. Pratique pour optimiser certains algo ;-)
Genre, "au hazard", le calcul de clé de hachage ou le tri de chaines dans un tableau à clé ...
A noter que tout celà fonctionne car la classe String est dit non modifiable (unmutable string).
[^] # Tout à fait et on peut même preciser ...
Posté par Hive Arc . En réponse à la dépêche Java Virtual Machine 1.4.2 beta. Évalué à 4.