В Java я понимаю, что присваивание оценивает значение правильного операнда, поэтому утверждения, подобные x == (y = x)
вычисляются как 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
.
Что здесь происходит?