In Java verstehe ich, dass die Zuweisung den Wert des richtigen Operanden ergibt, also Anweisungen wie x == (y = x)
evaluieren true
.
Dieser Code wird jedoch ausgegeben false
.
public static void main(String[]args){
String x = "hello";
String y = "goodbye";
System.out.println(x.equals(x = y));
}
Warum ist das? Nach meinem Verständnis wird zuerst ausgewertet (x = y)
, der x
den Wert von zuweist y
, und dann der Wert von zurückgegeben y
. Dann x.equals(y)
wird ausgewertet, was true
da sein sollte x
und y
jetzt die gleichen Referenzen teilen soll, aber stattdessen bekomme ich false
.
Was passiert hier?
x.equals( y = x )