Bonjour à tous,

Je fais appel à vos talents pour m'expliquer ce qui se passe dans le bout de code suivant :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
Integer i1 = 1000;
	Integer i2 = 1000;
	if(i1 != i2) System.out.println("i1 non égal à i2");
 
	Integer i3 = 127;
	Integer i4 = 127;
	if(i3 != i4) System.out.println("i3 non égal à i4");
A l'exécution il m'affiche bien "i1 non égal à i2". Jusque la d'accord, puisque i1 et i2 sont 2 objets différents, et ce sont ici les références qui sont comparées.

Cependant à ma grande surprise, il n'affiche pas "3 non égal à i4" !
Par contre si je fixe la valeur des variables i3 et i4 à 128 (au lieu de 127), la il m'affiche bien "i3 non égal à i4" !

Conclusion, si 2 Integer sont égaux et inférieurs à 128, java les considére égaux. Cependant si ils sont supérieurs à 128, ils ne sont plus égaux...

Si quelqu'un peut m'éclairer...