"Greetings, Amigo! I was so carried away by solving logic problems that I didn't notice you come in. Here's one for you: if crocodiles fly, then snow is white. There's a flying crocodile. What's the conclusion?"
"Um... So we conclude that snow is white?"
"Excellent! You passed the initiation test. You are ready to master the next topic. It is called 'logical operators'. And we'll start with Boolean logic. Instinctively, you already know it. You're a robot, after all. We just need to tweak your settings to match the Java language."
"Boolean logic? I was recently told about the boolean type..."
"Yes, there's a direct connection here. Boolean expressions can only be true or false. And as it happens, this sort of logic is all about expressions that are true or false, and combinations of such expressions. For example, the expression 18 < 25 is always true, and 7 < 5 is always false. The expression (i < 10) depends on the value of i. And if the expression evaluates, for example, to true, then we can ask the program to do something."
"Ahh, I get it. Boolean expressions allow us not only to make logical conclusions, but also to create forks in programs."
"Exactly. The main thing is to learn how to write them. For example, in Java you can't just go and write the expression 18 < age <65
. This would be syntactically incorrect and the program will not compile.
"But you can write it like this:
(18 < age) AND (age < 65)
Of course, we don't actually use the ENGLISH word AND
. Instead, you need a boolean operator. That is, 'AND' is represented differently.
"There are three logical operators in Java: AND
(&&), OR
(), NOT
(!).
The good news is that you can use parentheses to construct logical expressions of any complexity.
The bad news is that Java developers decided to use notation from the C language instead of the words and
, or
and not
.
Look at the screen:
Logical operator  Expectation  Reality 

AND (∧) 
and 
&& 
OR (∨) 
or 
 
NOT (¬) 
not 
! 
"It's actually not that bad... Pretty compact. I've almost memorized them."
"Well, that's marvelous. Here are some examples of using logical operators in Java:
Expression  Interpretation  Explanation 

(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)) 
Examples of using comparison operators and boolean variables
"Remember, Amigo, wherever you can write a logical expression, you can write a logical variable."
"How's that?"
"I mean you can write logical expressions in different ways. For instance:
Code  Explanation 


If the value of age is between 18 and 65 , then the phrase "You can work" is displayed. 

We created an isYoung variable and moved the first part of the expression into it. We simply replaced age >= 18 with age < 18 . 

We created an isOld variable and moved the second part of the expression into it. Additionally, age <= 65 was replaced by age > 65 . 
"These three examples are equivalent. Only in the second example did we move part of the expression from the if
statement into a separate boolean variable (isYoung
). In the third example, we moved the second part of the expression into a second variable (isOld
). By the way, the default value of a boolean variable is false
."
"I will remember that. I hope."
Logical arithmetic
"Now let's briefly go through logical operations. They obey very simple and logical (how could it be otherwise!) rules.
"First, let's see how the OR
operator works. It's also known as 
or disjunction.
Expression  Result 

true  true 
true 
true  false 
true 
false  true 
true 
false  false 
false 
"Can you deduce now what the result of the expression a  b
is based on the table?"
"I see!" The value of an expression is true
if at least one term in the expression is true
. If both are false
, then the result is false
.
"That's correct. Since you're so smart, take another look at the table and imagine that false
is 0 and true
is 1. When you look at it that way, does the 
operator's behavior remind you of anything from ordinary arithmetic?"
"Um... Well, it's a bit like addition... But when you do addition, 1 + 1 does not equal 1."
"There is a sense in which it is equal if we are only working with 0 and 1. But don't bother with that right now. The important thing is that you noticed the similarity between the 
operation and addition. This means you won't be surprised by the fact that this operation is often called 'logical addition'.
"Got it."
"Now the AND
, aka &&
, aka conjunction operator, comes onto the stage.
Expression  Result 

true && true 
true 
true && false 
false 
false && true 
false 
false && false 
false 
"As I understand it, the result of an expression is true
only if both values that make up the expression are true
. Otherwise, it is always false
."
"Well done, Amigo! You're absorbing all this like a sponge. Do you see another similarity with arithmetic?"
"Multiplication!"
"Exactly. So here we have a 'logical multiplication'".
"Next we look at the NOT
operator, aka !
, aka the logical inverse.
Expression  Result 

!true 
false 
!false 
true 
"Well, everything is quite simple here. The operator changes true
to false
and vice versa."
"Exactly. Here are some useful expressions for you:"
Expression  Result 

m && !m 
false 
m  !m 
true 
!(a && b) 
!a  !b 
!(a  b) 
!a && !b 
GO TO FULL VERSION