Quelqu'un peut-il me dire la raison de la modification de la sortie.
567 567 true 567 568 false 567 567 False
8 Réponses :
Parce que X et Y se réfèrent à 2 objets différents.
y--;
Utilisez p> ou p> Notez que l'auto-boîte automatique ne se produit pas dans y == x code> vérifie pour l'égalité de contenu, c'est-à-dire qu'ils ont pointé sur le même objet, non pas si l'objet qu'ils ont pointé pour contiennent le même
int code>. Surtout lorsque
x, y> = 128 code>.
x code> et
y code> comme
int code> à la place. p>
INTEGER == INTEGER CODE> ou
INTEGER! = INTEGER CODE>. P> P>
Changez votre
int y = 567; int x = y;
Lorsque vous utilisez la primitive Cependant, lorsque vous utilisez la classe int code> au lieu du
entier code>. La sortie finale serait
true code>. P>
entier code>, ils sont
objet code> s. Si vous utilisez la méthode code> égale code> La sortie finale serait
true code>. P>
lorsque vous utilisez Enger au lieu de la primitive Int. La sortie finale serait vraie. Code>. Quoi?
Vous utilisez Fondamentalement, votre code est p> integer code> qui est un objet immuable.
y = new Integer(y.intValue() - 1);
Le compilateur utilisera integer.valueof () code> au lieu du constructeur.
@BuhaKeIndi J'ai utilisé le constructeur pour en faire plus clairement, de ne pas montrer ce que fait la JVM.
Ceci est parce que le compilateur le fait en interne: signifie: p> donc, Utilisez y code> y code> est un nouvel
INTEGER code> instance. Vous faites une vérification de référence d'objet (lors de l'utilisation de
== code>) et non de la vérification de l'égalité de valeur. P>
Equals () code> méthode pour évaluer 2 valeurs. < / p> p>
Même, si vous créez
Integer a = new Integer(1); Integer b = new Integer(1);
Dans Java Nouveau code> Opérateur Toujours B> Allocatez la mémoire pour un nouvel objet. C'est contraire à la valeur entière statique du
Public Static (int I) Code> Méthode qui prend des entiers pour la plage spécifiée dans votre réponse à partir du cache interne, autrement renvoyé un nouvel entiers.
Integer y = 567; // y=567 Integer x = y; // x is equal to y object System.out.println(x + " " + y); // out put x and y so obviously x and y are 567 System.out.println(y == x); // here x and y are in same reference. so this x==y is true and out put is true. y++; // increment y by 1. then y=568 System.out.println(x + " " + y); // now x= 567 and y= 568 System.out.println(y == x);// now x not equals to y then false will print y--; // again decrement y value System.out.println(x + " " + y); // again x and y are same 567 System.out.println(y == x);// here y.value == x.value but x and y object wise not equal since object x and y are referring deference points
Faux, le == code> TOUJOURS B> Est-ce que vérification de référence d'objet. L'explication au 2e
false code> est incorrecte.
@Buhakesindi je veux dire. Mais vous vous trompez. Maintenant je change quelques mots
Essayez y.equals (x) au lieu de ==.