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 xden Wert von zuweist y, und dann der Wert von zurückgegeben y. Dann x.equals(y)wird ausgewertet, was trueda sein sollte xund yjetzt die gleichen Referenzen teilen soll, aber stattdessen bekomme ich false.
Was passiert hier?

x.equals( y = x )