salut,
j'ai un souci sur l'implémentation du code suivant :
je ne pense pas qu'il est équivalent au :Code:String S = "une valeur";
merciCode:String S = new String ("une valeur");
Version imprimable
salut,
j'ai un souci sur l'implémentation du code suivant :
je ne pense pas qu'il est équivalent au :Code:String S = "une valeur";
merciCode:String S = new String ("une valeur");
non, mais en pratique on utilise jamais la deuxième notation et ca ne fait une différence que dans de très rares cas.
Code:
1
2
3
4
5
6
7
8
9 String s1 = "une valeur"; String s2 = "une valeur"; String s3 = new String("une valeur"); String s4 = new String("une valeur"); (s1==s2) // vrai (s3==s4) // faux (s1.equals(s2)) // vrai (s3.equals(s4)) // vrai
non justement, c'est ca la différence avec les new String. Les valeur immédiates passent par String.intern(), qui te garanti que c'est la meme instance. Ce qui a comme effet accesoire de diminuser la charge mémoire quand un meme string est utilisée à beaucoup d'endroit du programme ;)
Pour info, la notation new String("aaa") est surtout utile quand on joue avec les substring et qu'on n'a plus besoin de l'espace alloué au String initial.