Operadores relacionais e lógicos
Tags: java
Published: 2024-07-02 20:47:14

- 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](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/5kwdd76van9pinsrb9op.png)

Operadores lógicos:
![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/8vd7rrzgyksnqxzv9no1.png)

- 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](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/zuqrnmk2vwnhz9es3ng5.png)

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

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/gm3igscjuwu428g3aw3v.png)

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](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/xdkv0op3vav1h4o3evjd.png)

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.