"Saudações, amigo! Eu estava tão empolgado resolvendo problemas de lógica que nem notei você entrar. Aqui está uma para você: se os crocodilos voam, então a neve é ​​branca. Há um crocodilo voador. Qual é a conclusão?"

"Hum... Então concluímos que a neve é ​​branca?"

"Excelente! Você passou no teste de iniciação. Você está pronto para dominar o próximo tópico. Chama-se 'operadores lógicos'. E vamos começar com a lógica booleana. Instintivamente, você já sabe. Você é um robô, afinal . Só precisamos ajustar suas configurações para corresponder à linguagem Java."

"Lógica booleana? Recentemente me falaram sobre o tipo booleano..."

"Sim, há uma conexão direta aqui. Expressões booleanas só podem ser verdadeiras ou falsas. E acontece que esse tipo de lógica é sobre expressões que são verdadeiras ou falsas e combinações de tais expressões. Por exemplo, a expressão 18 < 25 é sempre verdadeiro e 7 < 5 é sempre falso. A expressão (i < 10) depende do valor de i. E se a expressão for avaliada, por exemplo, como verdadeira, então podemos pedir ao programa para fazer algo."

"Ahh, entendi. Expressões booleanas nos permitem não apenas tirar conclusões lógicas, mas também criar bifurcações em programas."

"Exatamente. O principal é aprender a escrevê-los. Por exemplo, em Java você não pode simplesmente escrever a expressão 18 < age <65. Isso seria sintaticamente incorreto e o programa não compilaria.

"Mas você pode escrever assim:

(18 < age) AND (age < 65)

Claro, nós não usamos a palavra INGLÊS AND. Em vez disso, você precisa de um operador booleano . Ou seja, 'E' é representado de forma diferente.

"Existem três operadores lógicos em Java: AND(&&), OR(||), NOT(!).

A boa notícia é que você pode usar parênteses para construir expressões lógicas de qualquer complexidade.

A má notícia é que os desenvolvedores Java decidiram usar a notação da linguagem C em vez das palavras and, ore not.

Observe a tela:

operador lógico Expectativa Realidade
AND (∧) and &&
OR (∨) or ||
NOT (¬) not !

"Na verdade, não é tão ruim... Bem compacto. Quase os decorei."

"Bem, isso é maravilhoso. Aqui estão alguns exemplos de uso de operadores lógicos em Java:

Expressão Interpretação Explicação
(0 < a) && (a < 100) (0 < a) and (a < 100) (0 < a) AND (a < 100)
(!a) && (!b) (not a) and (not b) (NOT a) AND (NOT b)
!(!a || !b) not((not a) or (not b)) NOT((NOT a) OR (NOT b))

Exemplos de uso de operadores de comparação e variáveis ​​booleanas

"Lembre-se, amigo, onde quer que você possa escrever uma expressão lógica, você pode escrever uma variável lógica."

"Que tal?"

"Quero dizer que você pode escrever expressões lógicas de maneiras diferentes. Por exemplo:

Código Explicação
int age = 35;
if (age >= 18 && age <= 65)
   System.out.println("You can work");
Se o valor da idade estiver entre 18e 65, a frase "Você pode trabalhar" será exibida.
int age = 35;
boolean isYoung = (age < 18);
if (!isYoung && age <= 65)
   System.out.println("You can work");
Criamos uma isYoungvariável e movemos a primeira parte da expressão para ela. Simplesmente substituímos age >= 18por age < 18.
int age = 35;
boolean isYoung = (age < 18);
boolean isOld = (age > 65);
if (!isYoung && !isOld)
   System.out.println("You can work");
Criamos uma variável isOld e movemos a segunda parte da expressão para ela. Além disso, age <= 65foi substituído por age > 65.

"Esses três exemplos são equivalentes. Somente no segundo exemplo movemos parte da expressão da ifinstrução para uma variável booleana separada ( isYoung). No terceiro exemplo, movemos a segunda parte da expressão para uma segunda variável ( isOld). A propósito, o valor padrão de uma variável booleana é false."

"Vou me lembrar disso. Espero."

aritmética lógica

"Agora vamos passar brevemente pelas operações lógicas. Elas obedecem a regras muito simples e lógicas (como poderia ser diferente!).

"Primeiro, vamos ver como o ORoperador funciona. Também é conhecido como ||ou disjunção .

Expressão Resultado
true || true true
true || false true
false || true true
false || false false

"Você pode deduzir agora qual é o resultado da expressão a || bcom base na tabela?"

"Eu vejo!" O valor de uma expressão é truese pelo menos um termo na expressão for true. Se ambos forem false, o resultado será false.

"Está correto. Já que você é tão inteligente, dê outra olhada na tabela e imagine que falseé 0 e trueé 1. Quando você olha dessa maneira, o ||comportamento do operador lembra algo da aritmética comum?"

"Hum... Bem, é um pouco como uma adição... Mas quando você faz uma adição, 1 + 1 não é igual a 1."

"Há um sentido em que é igual se estivermos trabalhando apenas com 0 e 1. Mas não se preocupe com isso agora. O importante é que você notou a semelhança entre a operação e a adição. Isso significa que você ||não Não se surpreenda com o fato de que esta operação é freqüentemente chamada de 'soma lógica'.

"Entendi."

"Agora o AND, também conhecido &&como operador de conjunção , entra em cena.

Expressão Resultado
true && true true
true && false false
false && true false
false && false false

"Pelo que entendi, o resultado de uma expressão é truesomente se ambos os valores que compõem a expressão são true. Caso contrário, é sempre false."

"Muito bem, amigo! Você está absorvendo tudo isso como uma esponja. Você vê outra semelhança com a aritmética?"

"Multiplicação!"

"Exatamente. Então aqui temos uma 'multiplicação lógica'".

"Em seguida, olhamos para o NOToperador, também conhecido como !, também conhecido como o inverso lógico .

Expressão Resultado
!true false
!false true

"Bem, tudo é bem simples aqui. O operador muda truepara falsee vice-versa."

"Exatamente. Aqui estão algumas expressões úteis para você:"

Expressão Resultado
m && !m false
m || !m true
!(a && b) !a || !b
!(a || b) !a && !b