DEV Community

Operadores relacionais e lógicos

  • Operador relacional se refere aos relacionamentos que os valores podem ter uns com os outros.

  • Operador lógico se refere às maneiras como os valores verdadeiro e falso podem estar conectados.

  • Operadores relacionais produzem resultados verdadeiros ou falsos.

  • Com frequência, operadores relacionais trabalham com operadores lógicos.

Operadores relacionais:
Image description

Operadores lógicos:
Image description

  • O resultado dos operadores relacionais e lógicos é um valor boolean.

  • Em Java, todos os objetos podem ser comparados para igualdade ou diferença usando == e !=.

  • Os operadores de comparação <, >, <= ou >= só podem ser aplicados a tipos com relacionamento sequencial.

  • Operadores relacionais podem ser aplicados a tipos numéricos e ao tipo char.

  • Valores de tipo boolean só podem ser comparados quanto à igualdade ou diferença.

  • Em Java, true > false não tem significado.

  • Operandos dos operadores lógicos devem ser do tipo boolean gerando um resultado de tipo boolean.

  • Os operadores lógicos &, |, ^ e ! dão suporte às operações AND, OR, XOR e NOT.

Image description

  • Como a tabela mostra, o resultado de uma operação exclusive OR é verdadeiro quando exatamente um, e apenas um, operando é verdadeiro.

Image description

A saída do programa é dada a seguir:
i < j
i <= j
i != j
!(b1 & b2) is true
b1 | b2 is true
b1 ^ b2 is true

Operadores lógicos de curto-circuito

  • Java fornece versões de curto-circuito dos operadores lógicos AND e OR para código mais eficiente.

  • Em uma operação AND, se o primeiro operando for falso, o resultado é falso independente do segundo operando.

  • Em uma operação OR, se o primeiro operando for verdadeiro, o resultado é verdadeiro independente do segundo operando.

  • Nesses casos, não é necessário avaliar o segundo operando, economizando tempo e produzindo código mais eficiente.

  • O operador AND de curto-circuito é && e o operador OR de curto-circuito é ||.

  • Seus equivalentes comuns são & e |.

  • A versão comum sempre avalia cada operando, enquanto a versão de curto-circuito só avalia o segundo operando quando necessário.

Exemplo de uso: determinar se d é um fator de n usando && para evitar erro de divisão por zero em uma operação de módulo.

Image description

A instrução if primeiro verifica se d é igual a zero para impedir uma divisão por zero.
Se d for zero, o operador AND de curto-circuito interrompe a execução e não realiza a operação de módulo.
No primeiro teste, d é igual a 2 e a operação de módulo é executada.
No segundo teste, d é zero, e a operação de módulo é ignorada, evitando a divisão por zero.

  • O operador AND comum avalia ambos os operandos, levando a um erro de tempo de execução na divisão por zero.

  • Os operadores de curto-circuito são formalmente chamados de conditional-or e conditional-and em Java, mas o termo “curto-circuito” é mais usado.

Top comments (0)