Fala, pessoal! Hoje nós vamos falar sobre os operadores lógicos em Java, um assunto extremamente importante e essencial para todos programadores. Vamos lá?

Primeiramente, para que eles servem? O operador lógico serve para você analisar condições e assim retornar true ou false com base na operação lógica.

Nós temos alguns operadores lógicos no Java, portanto, iremos ver nesse artigo apenas os seguintes operadores:

O operador E representado no Java como “ && ”.

O operador OU representado por “ | “.

E a negação, representado por “ ! “.

Também temos o operador XOR representado pelo “ ^ ”, mas ele já foi abordado em um artigo especificamente dele.

Tabela verdade

Para quem ainda não é familiarizado com esse conceito, primeiramente nós veremos os resultados usando a tabela verdade nos operadores lógicos do Java:

Tabela verdade do “e” representado pelo operador “&&”.

Vamos supor um cenário onde você quer ir passear, mas para ir você precisa estar de folga e ter sol, então o operador && irá comparar se você satisfaz uma condição E também a condição seguinte.

Portanto, nessa tabela verdade nós veremos quais as condicionais e suas respectivas respostas onde a pessoa vai ou não passear.

Relembrando que o operador && só retornará o valor VERDADEIRO se todas as expressões forem verdadeiras, ou seja, se essa condição for verdadeira E essa outra condição também for verdadeira E essa outra também e assim por diante.

Certo, então nisso a gente já entendeu como essa expressão funciona, respeitando a regra do E.

Seguindo esse pensamento vamos para a tabela verdade:

V = Verdadeiro (TRUE)

F = Falso (FALSE)

No caso do operador E, a única vez que o retorno será true será o momento em que TODAS as condições forem verdadeiras, sem exceção alguma. Além disso, também pode haver mais que duas condições encadeadas, como: V && F && V && F && F, quantas fazerem sentido para a lógica necessária.

Vamos ver esse exemplo em código:

	Scanner scanner = new  Scanner(System.in);  

        System.out.println("Você está de folga?");
        boolean folga = scanner.nextBoolean();

        System.out.println("Tem sol?");
        boolean temSol = scanner.nextBoolean();

        if (temSol && folga) {
            System.out.println("irei ir passear hoje!!! =D");
        } else{
            System.out.println("Não irei passear! =C");
        }

//O Retorno só será "irei ir passear hoje!!! =D" se TODAS as condições forem true.

Operador ou “ | “

Esse operador significa o operador lógico referente ao OU, ou seja, para retornar true deve haver alguma condição que retorna true, apenas uma, no mínimo!

Tabela verdade do “OU” representado pelo “||”

Nesse operador, como visto acima, é necessário que apenas uma condição seja verdadeira para que a resposta seja true.

Agora, nós iremos rever o exemplo passado, porém com o operador lógico OU ou (OR), nesse caso irá passear se tiver sol OU se estiver de folga, sendo um deles verdadeiros, o resultado já será verdadeiro, podendo também ter mais de duas condições.

Seguindo esse pensamento vamos para a tabela verdade:

V = Verdadeiro (TRUE)

F = Falso (FALSE)

Exemplo no código usando o mesmo exemplo passado:

				Scanner scanner = new Scanner(System.in);

        System.out.println("Você está de folga?");
        boolean folga = scanner.nextBoolean();

        System.out.println("Tem sol?");
        boolean temSol = scanner.nextBoolean();

        if (temSol || folga) {
            System.out.println("irei ir passear hoje!!! =D");
        } else{
            System.out.println("Não irei passear! =C");
        }

//O Retorno será "irei ir passear hoje!!! =D" enquanto tiver alguma condição verdadeira.

Operador de negação representado por “!”

Agora por último mas não menos importante, nós vamos ver o operador de negação representado pelo símbolo de exclamação “!”. Ele faz a reversão dos valores booleanos, ou seja, se um valor for true e você usar negação, ele se transformará em false. Para usar esse operador, devemos botar ele antes da condição da seguinte forma.

boolean negacao = !true; // com negação se torna false!

boolean negacao = !false; // com negação se torna true!

Ou até mesmo diretamente assim:

System.out.println(!false); // TRUE

System.out.println(!true); // FALSE

Portanto, o operador de negação serve para inverter o valor booleano, seja uma expressão ou até mesmo um método que retorne um valor booleano.

Conclusão

Então por hoje é isso, pessoal. Eu espero que tenha conseguido fazer vocês entenderem melhor o conceito de operadores lógicos, um grande abraço e até a próxima!