Difficile
Que va donner le code suivant :
class AutoboxingQuestion {
public static void main(String[] args) {
Integer a = 10;
Integer b = 10;
Integer c = 200;
Integer d = 200;
System.out.println(a == b);
System.out.println(c == d);
}
}
Auteur: Joffrey BonifayStatut : PubliéeQuestion passée 187 fois
Modifier
3
Évaluations de la communauté
Selim Hoummadi
30/05/2024
J'ai été surpris, je pensais qu'avec l'autoboxing et unboxing, le compilateur aurait généré des instructions lors de la comparaison. Et j'imagine que ça peut facilement être la source de bug dans des programmes
Du coup +1 pour cette question, difficile mais intéressante et pertinente dans le développement Java de tous les jours
Mohamed
15/06/2024
Le piège des valeurs possibles des entiers "entre -128 et 127" les Integer sont mis dans un cache donc l'opérateur == compare les références des objets, par contre pour la valeur 200 qui est en dehors de l'intervalle, l'opérateur == considère que ce sont deux objets avec des références différentes
Questions similairesPlus de questions sur Java