En Java, je comprends que l'affectation est évaluée à la valeur de l'opérande de droite, de sorte que des déclarations comme x == (y = x)
évaluer à l' true
.
Ce code, cependant, sorties false
.
public static void main(String[]args){
String x = "hello";
String y = "goodbye";
System.out.println(x.equals(x = y));
}
Pourquoi est-ce? Dans ma compréhension, il évalue d'abord (x = y)
, ce qui affecte x
de la valeur de y
, puis renvoie la valeur de y
. Ensuite, x.equals(y)
est évaluée, ce qui devrait être true
depuis x
et y
devraient partager les mêmes références, maintenant, mais au lieu de cela, je reçois false
.
Ce qui se passe ici?