Operadores de Comparação e Lógicos em Java
Operadores de Comparação e Lógicos são utilizados em expressões que avaliam condições e produzem resultados do tipo boolean, retornando true quando a condição é verdadeira e false caso contrário. São fundamentais para o controle de fluxo em instruções como if, while e outras estruturas condicionais.
Operadores de Comparação
Operadores de comparação realizam verificações entre dois operandos e retornam um valor boolean. O resultado é true se a comparação for verdadeira, e false caso contrário.
==(igualdade)Compara dois valores. Retorna
truese forem iguais, efalsese forem diferentes:int a = 10; int b = 4; boolean c = a == b; // false boolean d = a == 10; // true!=(diferença)Retorna
truese os valores forem diferentes, e false se forem iguais:int a = 10; int b = 4; boolean c = a != b; // true boolean d = a != 10; // false<(menor que)Retorna
truese o primeiro operando for menor que o segundo:int a = 10; int b = 4; boolean c = a < b; // false>(maior que)Retorna
truese o primeiro operando for maior que o segundo:int a = 10; int b = 4; boolean c = a > b; // true>=(maior ou igual)Retorna
truese o primeiro valor for maior que ou igual ao segundo:boolean c = 10 >= 10; // true boolean b = 10 >= 4; // true boolean d = 10 >= 20; // false<=(menor ou igual)Retorna
truese o primeiro valor for menor que ou igual ao segundo:boolean c = 10 <= 10; // true boolean b = 10 <= 4; // false boolean d = 10 <= 20; // true
Operadores Lógicos
Os operadores lógicos em Java também avaliam condições booleanas e retornam true ou false. São frequentemente usados para combinar expressões de comparação.
|(OU bit a bit)Avalia ambos os operandos. Retorna
truese pelo menos um deles fortrue; caso contrário, retornafalse:boolean c = a | b;&(E bit a bit)Avalia ambos os operandos. Retorna
trueapenas se ambos foremtrue; caso contrário, retornafalse:boolean c = a & b;!(negação)Inverte o valor booleano de um único operando. Se
bforfalse,cserátrue; sebfortrue,cseráfalse:boolean c = !b;^(OU exclusivo)Retorna
truese apenas um dos operandos fortrue. Se ambos foremtrueou ambosfalse, retornafalse:boolean c = a ^ b;||(OU lógico)Avalia primeiro o operando à esquerda. Se for
true, o operando à direita não é avaliado, pois o resultado já serátrue(avaliação de curto-circuito):boolean c = a || b;&&(E lógico)Avalia primeiro o operando à esquerda. Se for
false, o operando à direita não é avaliado, pois o resultado já seráfalse(também com curto-circuito):boolean c = a && b;
ℹ️ Os operadores
&&,||e!são exclusivos para lógica booleana e controle de fluxo. Na prática, são os mais utilizados, especialmente por oferecerem avaliação com curto-circuito (&&e||) e negação (!), favorecendo tanto desempenho quanto legibilidade.Já os operadores
&,|e^podem ser usados com valores booleanos, mas também operam sobre inteiros. Com booleanos, sempre avaliam os dois lados da expressão. Com inteiros, realizam operações bit a bit, manipulando diretamente os bits binários dos operandos.O operador
!atua somente sobre valores booleanos e não possui equivalente bit a bit.
Exemplos
boolean a1 = (5 > 6) || (4 < 6); // false || true → true
boolean a2 = (5 > 6) || (4 > 6); // false || false → false
boolean a3 = (5 > 6) && (4 < 6); // false && (não avaliado) → false
boolean a4 = (50 > 6) && (4 / 2 < 3); // true && true → true
boolean a5 = (5 < 6) ^ (4 > 6); // true ^ false → true
boolean a6 = (50 > 6) ^ (4 / 2 < 3); // true ^ true → false📝 Exercícios
Tarefa 1: Qual é o resultado do operador OR?
O que o código abaixo vai exibir?
System.out.println( false || true || false );Resposta
|| retorna true se pelo menos uma das expressões for verdadeira. Como a segunda é true, o resultado é true.
true
Tarefa 2: Qual é o resultado do operador AND?
System.out.println( true && false && true );Resposta
&& só retorna true se todas as expressões forem verdadeiras. Como a segunda é false, o resultado da expressão completa é false.
false
Tarefa 3: Qual será o resultado da expressão combinando OR e AND?
System.out.println( false || true && true || false );Resposta
&& tem precedência maior que ||, então true && true é avaliado primeiro (resultado true). A expressão vira false || true || false, que resulta em true.
true
Tarefa 4: Qual dessas instruções será executada?
if (-1 != 0 || 0 != 0) System.out.println("primeiro");
if (-1 != 0 && 0 != 0) System.out.println("segundo");
if (false || (-1 != 0 && 1 != 0)) System.out.println("terceiro");Resposta
primeiro terceiro
-1 != 0 || 0 != 0 → true || false → true, imprime "primeiro"-1 != 0 && 0 != 0 → true && false → false, não imprimefalse || (true && true) → false || true → true, imprime "terceiro"