En Java, entiendo que la asignación evalúa el valor del operando correcto, por lo que declaraciones como x == (y = x)evaluar atrue .
Este código, sin embargo, genera false.
public static void main(String[]args){
String x = "hello";
String y = "goodbye";
System.out.println(x.equals(x = y));
}
¿Por qué es esto? Según tengo entendido, primero evalúa (x = y), que asigna xel valor de yy luego devuelve el valor de y. Luego x.equals(y)se evalúa, que debería ser truedesde xy ydebería compartir las mismas referencias ahora, pero en cambio, obtengo false.
¿Que está sucediendo aquí?

x.equals( y = x )