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 x
el valor de y
y luego devuelve el valor de y
. Luego x.equals(y)
se evalúa, que debería ser true
desde x
y y
debería compartir las mismas referencias ahora, pero en cambio, obtengo false
.
¿Que está sucediendo aquí?
x.equals( y = x )