В 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.
Что здесь происходит?
