Traemos la mejor solución que hemos encontrado en internet. Nuestro deseo es que te sea de ayuda y si quieres aportar algún detalle que nos pueda ayudar a crecer siéntete libre de hacerlo..
Solución:
¿== verifica la igualdad total en booleanos? -Java
Depende de si estás hablando de Boolean
s (el envoltorio del objeto, tenga en cuenta la mayúscula B
) o boolean
s (el primitivo, tenga en cuenta la minúscula b
). Si estás hablando de Boolean
s (el envoltorio del objeto), como con todos los objetos, ==
cheques para identidadno equivalencia. Si estás hablando de boolean
s (primitivas), verifica la equivalencia.
Entonces:
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
Con respecto a las cadenas:
Escuché que si comparo 2 cadenas con == entonces solo obtendré true atrás si las cadenas son idénticas y ambas se refieren al mismo objeto/instancia…
No es realmente un “y”: ==
será solo comprobar si los dos String
Las variables se refieren a lo mismo. String
ejemplo. por supuesto, uno String
La instancia 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 key el punto es que ==
reportará false
por diferenteString
instancias incluso si tienen los mismos caracteres en el mismo orden. Por eso usamos equals
en ellos, no ==
. Las cadenas pueden volverse un poco confusas debido a intern
ing, que es específico para cadenas (no hay equivalente para Boolean
aunque cuando usas Boolean.valueOf(boolean)
, obtendrá un objeto en caché). También tenga en cuenta que Java no tiene cadenas primitivas como las primitivas. boolean
, int
etc
Si tiene un objeto, use iguales, cuando no, puede ejecutar cosas como esta. (caché de VM para primitivas de 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 VERDADERO y FALSO
Al usar ( == ) con booleanos,
-
Si uno de los operandos es un envoltorio booleano, primero se desempaqueta en un primitivo booleano y se comparan los dos.
-
Si ambos son envoltorios booleanos, creados con la palabra clave ‘nuevo’, entonces sus referencias se comparan como en el caso de otros objetos.
new
es false
Boolean("true") == new Boolean("true") -
Si ambos son envoltorios booleanos, creados sin la palabra clave ‘nueva’,
Boolean a = false; Boolean b = Boolean.FALSE; // (a==b) return true