Bonjour à tous,
Je viens vers vous pour m'éclairer sur un point qui me semble étrange.
Je précise que je travaille avec Tiger (1.5)
Avec le code suivant :
"true" s'affiche.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 String s1 = "s"; String s2 = "s"; System.out.println(s1 == s2);
Cette fois j'ai un false qui s'affiche
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 String s1 = new String("s"); String s2 = new String("s"); System.out.println(s1 == s2);
Pensant que c'etait un mécanisme propre aux String, j'ai décidé de tester avec un Object qui permet l'autoboxing à savoir la classe Integer. Le résultat est le même :
"true" s'affiche.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 Integer i1 = 1; Integer i2 = 1; System.out.println(i1 == i2);
"false" s'affiche
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 Integer i1 = new Integer(1); Integer i2 = new Integer(1); System.out.println(i1 == i2);
Je pensais que "==" comparer les variables d'instances de s1 et s2.
Quelqu'un peut m'expliquer le mécanisme qui justifierait ce comportement?
Merci d'avance.
Bien Cordialement,
Partager