Pourquoi en Java, lors de l'attribution des variables i3, i4 avec le même type de données, System.out.println(i3==i4), le résultat final n'est pas égal ?
黄舟
黄舟 2017-06-28 09:24:50
0
2
1042

System.out.println(i3==i4), pourquoi le résultat de sortie n'est pas vrai

class Demo
{
  public static void main(String[] arge)
{ 
  Integer i1=100;
  Integer i2=100;
  Integer i3=200;
  Integer i4=200;
  System.out.println(i1==i2);
  System.out.println(i3==i4);
}
}

黄舟
黄舟

人生最曼妙的风景,竟是内心的淡定与从容!

répondre à tous(2)
迷茫

Tout d'abord, nous savons que le type d'objet compare l'adresse mémoire à laquelle il fait référence lorsqu'il fait ==. Ainsi, dans la démo de l'affiche originale, en principe, i1==i2 et i3==i4 comparent les adresses mémoire auxquelles ils font référence, qui devraient toutes deux être fausses. Cependant, Java a introduit le mécanisme de mise en cache Integer dans Java5. Lorsque les développeurs utilisent le type Integer, si la valeur définie est comprise entre -128 et 127, la référence sera pointée directement vers l'objet de cache créé.

Dans la démo de l'affiche, les deux variables i1 et i2 sont comprises entre -128~127, donc les références des deux variables pointent vers la même instance d'objet (la même adresse mémoire), donc true est renvoyé, tandis que les deux variables i3 et i4 La valeur n'est pas comprise entre -128 et 127, donc le jvm crée de nouvelles instances d'objet (différentes adresses mémoire) pour ces deux types d'objet automatiquement encadrés, il renvoie donc false.

La valeur maximale du mécanisme de cache Integer peut être ajustée via le paramètre jvm -XX:AutoBoxCacheMax=size. Pour plus de détails et les principes d'Integer, veuillez vous référer à ce blog. http://blog.csdn.net/u0110040...

黄舟

La classe plastic wrapper mettra en cache les objets entiers de 0 à 150, donc s'il est inférieur à 150, le cache sera utilisé lors de la boxe, 100 est un objet dans le cache et 200 est un objet nouvellement créé

.
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!