¿alguien sabe por qué:operador lógico OR vs operador binario OR
if (false && true || true) {
System.out.println("True");
} else {
System.out.println("False");
}
Imprimir "verdadera"
if (false && true | true) {
System.out.println("True");
} else {
System.out.println("False");
}
Imprimir "Falso"
Hubo una respuesta correcta aquí por colin que se volcó como loco. No quiero el mismo destino, así que lo publicaré como comentario: & y | en un contexto booleano no son operadores bit a bit, sino operadores booleanos ansiosos (no hay cortocircuito, ambos lados siempre serán evaluados). Vea esto: http://en.wikipedia.org/wiki/Short-circuit_evaluation#Support_in_common_programming_languages –
Lo extraño es que no puedo encontrar ningún documento oficial de Sun donde | y se mencionan como operadores lógicos (pero es parte del examen SCJP6) –
@seanizer: Todavía hay una respuesta correcta aquí. (Dos de ellos, de hecho.) :-) Ya sea que estén en modo bit o no en booleanos, realmente no es el punto * aquí *, el '|' tiene precedencia más alta independientemente y es por eso que el OP está viendo el comportamiento que él/ella está preguntando acerca de. –