español - tutorial java oficial
¿Cuándo puedo usar el operador "=="? (1)
He encontrado una cita de jls:
Los operadores de igualdad se pueden usar para comparar dos operandos que son convertibles (§5.1.8) a tipo numérico, o dos operandos de tipo booleano o booleano, o dos operandos que son cada uno de tipo de referencia o tipo nulo . Todos los demás casos dan como resultado un error en tiempo de compilación.
Pero este código
String str= "";
Number num = 1;
System.out.println(str == num);
cada operando es referencia!
dijo que es tipos incompatibles.
¿Dónde dijo en jls que estos tipos deberían ser compatibles?
En la sección 15.21.3 (Operadores de igualdad de referencia == y! =):
Es un error en tiempo de compilación si es imposible convertir el tipo de cualquier operando al tipo de otro mediante una conversión de conversión (§5.5). Los valores de tiempo de ejecución de los dos operandos necesariamente serían desiguales.