Trong Java, tôi hiểu rằng phép gán đánh giá giá trị của toán hạng bên phải, vì vậy các câu lệnh như x == (y = x)eval to true.
Mã này, tuy nhiên, đầu ra false.
public static void main(String[]args){
String x = "hello";
String y = "goodbye";
System.out.println(x.equals(x = y));
}
Tại sao thế này? Theo hiểu biết của tôi, đầu tiên nó đánh giá (x = y), chỉ định xgiá trị của y, và sau đó trả về giá trị của y. Sau đó x.equals(y)được đánh giá, nên truetừ đó xvà ynên chia sẻ các tài liệu tham khảo giống nhau ngay bây giờ, nhưng thay vào đó, tôi nhận được false.
Chuyện gì đang xảy ra ở đây?

x.equals( y = x )