usar - simbologia java
Diferencia entre & y && en Java? (5)
Posibles duplicados:
Cuál es la diferencia entre | y || en Java?
Diferencia en & y &&
Me preguntaba ¿cuál es la diferencia entre & y && ?
Unos días escribí una condición para una declaración if
que parecía algo así como:
if(x < 50 && x > 0)
Sin embargo, cambié el && a simplemente & y no mostró errores. ¿Cual es la diferencia?
Ejemplo: compilé este sencillo programa:
package anddifferences;
public class Main {
public static void main(String[] args) {
int x = 25;
if(x < 50 && x > 0) {
System.out.println("OK");
}
if(x < 50 & x > 0) {
System.out.println("Yup");
}
}
}
Imprimió "OK" y "Yup". Entonces, ¿importa cuál usar si ambos funcionan?
& es un operador AND bit a bit que compara bits de cada operando.
Por ejemplo,
int a = 4;
int b = 7;
System.out.println(a & b); // prints 4
//meaning in an 32 bit system
// 00000000 00000000 00000000 00000100
// 00000000 00000000 00000000 00000111
// ===================================
// 00000000 00000000 00000000 00000100
&& es el operador AND lógico que compara valores booleanos de operandos solamente. Toma dos operandos que indican un valor booleano y realiza una evaluación diferida sobre ellos.
&& == lógico AND
& = en bitácora Y
&& es un operador lógico
y es un operador poco
Aparentemente si haces una comparación de cierto a verdadero, la respuesta es verdadera, y si haces una comparación de cierto y falso, ¡la respuesta es falsa!
''&'' realiza ambas pruebas, mientras que ''&&'' solo realiza la segunda prueba si la primera también es verdadera. Esto se conoce como cortocircuito y puede considerarse una optimización. Esto es especialmente útil para proteger contra la nulidad.
if( x != null && x.equals("*BINGO*") {
then do something with x...
}
&
es bitwise. &&
es lógico.
&
evalúa ambos lados de la operación.
&&
evalúa el lado izquierdo de la operación, si es true
, continúa y evalúa el lado derecho.