
Envoyé par
emna1987
Bonjour,
j'ai ce petite comparaison
String x="Hello World";
String z=" Hello World".trim();
System.out.println(x==z);//false
je ne viens pas de comprendre pourquoi false car normallement après que j'applique la fonction trim() l'espace va etre supprimé
C'est exact.

Envoyé par
emna1987
et par conséquent les deux chaines vont pointer sur le meme référence
Non, la fonction trim doit effectuer une transformation, et vu que String est une classe immuable, elle doit alors créer et retourner une nouvelle instance, donc avec une référence différente.
Les 2 String vont effectivement avoir le même contenu (equals retournera true), mais elles seront 2 objets distincts en mémoire.
Pour que les 2 variables partagent la même référence mémoire au sein du pool, il est nécessaire d'appeler la méthode intern, qui fournira la référence de l'instance contenue dans le pool et donc de l'assigner à la variable.
String z=" Hello World".trim().intern();
Partager