metodo entero diferencia declarar comparar java boolean equals-operator

entero - java diferencia== equals



¿Verifica== la igualdad total en los booleanos?-Java (3)

Así que he escuchado que si comparo 2 cadenas con ==, solo obtendré la verdad si ambas se refieren al mismo objeto / instancia. Eso es cuerdas. ¿Qué pasa con los booleanos?


¿Verifica == la igualdad total en los booleanos? - Java

Depende de si se está hablando de Boolean s (el objeto envoltorio, note la capital B ) o boolean s (el primitivo, note la minúscula b ). Si está hablando de Boolean s (el contenedor de objetos), como con todos los objetos, == comprueba la identidad , no la equivalencia . Si estás hablando de boolean s (primitivos), verifica la equivalencia.

Asi que:

Boolean a, b; a = new Boolean(false); b = new Boolean(false); System.out.println("a == b? " + (a == b)); // "a == b? false", because they''re not the same instance

Pero

boolean c, d; c = false; d = false; System.out.println("c == d? " + (c == d)); // "c == d? true", because they''re primitives with the same value

Respecto a las cuerdas:

He escuchado que si comparo 2 cadenas con == entonces solo obtendré verdadero si las cadenas son idénticas y ambas se refieren al mismo objeto / instancia ...

No es realmente un "and": == solo comprobará si las dos variables de String refieren a la misma instancia de String . Por supuesto, una instancia de String solo puede tener un conjunto de contenidos, por lo que si ambas variables apuntan a la misma instancia, naturalmente, los contenidos son los mismos ... :-) El punto clave es que == notificará false para diferentes instancias de String incluso si tienen los mismos personajes en el mismo orden. Es por eso que usamos equals en ellos, no == . Las cadenas pueden ser un poco confusas debido a la interning , que es específica de las cadenas (no hay equivalente para Boolean , aunque cuando usas Boolean.valueOf(boolean) , obtendrás un objeto guardado en caché). También tenga en cuenta que Java no tiene cadenas primitivas como lo hace primitiva boolean , int , etc.


Depende si se trata de tipos de valores como: int , boolean , long o sobre tipos de referencia: Integer , Boolean , Long . los tipos de valor podrían compararse con == , los tipos de referencia deben compararse con equals .


Si tienes un uso de Objetos igual, cuando no, puedes ejecutar cosas como esta. (Caché de VM para primitivas autoboxing)

public static void main(String[] args){ Boolean a = true; Boolean b = true; System.out.println(a == b); a = new Boolean(true); b = new Boolean(true); System.out.println(a == b); }

La salida es VERDADERA y FALSA