ejemplo - if equals java
¿Cómo funciona la comparación Object y primitive, con operator== en Java? (1)
Como siempre, la Especificación del lenguaje Java es el recurso apropiado para consultar
De JLS 15.21.1 ("Operadores de igualdad numérica == y! ="):
Si los operandos de un operador de igualdad son ambos de tipo numérico, o uno es de tipo numérico y el otro es convertible (§5.1.8) a tipo numérico, se realiza una promoción numérica binaria en los operandos (§5.6.2).
Tenga en cuenta que la promoción numérica binaria realiza una conversión de conjunto de valores (§5.1.13) y puede llevar a cabo la conversión de unboxing (§5.1.8).
Luego de 5.6.2 (promoción numérica binaria):
Cuando un operador aplica la promoción numérica binaria a un par de operandos, cada uno de los cuales debe denotar un valor que es convertible a un tipo numérico, se aplican las siguientes reglas, en orden:
- Si cualquier operando es de un tipo de referencia, está sujeto a la conversión de unboxing (§5.1.8).
- [...]
Entonces, el Long
se desempaqueta a long
. Tu código es equivalente a:
Long objectLong = 555l;
long primitiveLong = 555l;
// This unboxing is compiler-generated due to numeric promotion
long tmpLong = objectLong.longValue();
System.out.println(tmpLong == primitiveLong);
Esta pregunta ya tiene una respuesta aquí:
Por ejemplo:
Long objectLong = 555l;
long primitiveLong = 555l;
System.out.println(objectLong == primitiveLong); // result is true.
¿Hay un método de invocación objectLong.longValue () para comparar Long to long o tal vez de alguna otra manera?