У Java я розумію, що присвоєння оцінює значення правильного операнда, тому такі оператори, як x == (y = x)оцінка to true.
Однак цей код видає false.
public static void main(String[]args){
String x = "hello";
String y = "goodbye";
System.out.println(x.equals(x = y));
}
Чому це? На моє розуміння, він спочатку оцінює (x = y), що призначає xзначення y, а потім повертає значення y. Потім x.equals(y)обчислюється, що повинно бути trueз тих пір, xі тепер yмають мати ті самі посилання, але натомість я отримую false.
Що тут відбувається?

x.equals( y = x )