У 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 )