1. Булева логика

В языке Java нельзя записать выражение 18 < age < 65 — оно будет синтаксически некорректным и программа не скомпилируется.

Зато можно записать его так:

            (18 < age) И (age < 65)
        

Разумеется, вместо слова И там будет другой логический оператор, и сейчас мы как раз поговорим о них подробнее.

В Java есть три логических оператора: AND (и), OR (или) и NOT (не).

Хорошая новость: используя скобки, можно построить логические выражения любой сложности.

Плохая новость: разработчики Java решили вместо слов and, or и not, использовать обозначения из языка C.

Внимание на экран:

Логический оператор Ожидание Реальность
И (∧) and &&
ИЛИ (∨) or ||
НЕ (¬) not !

Вот несколько примеров использования логических операторов в Java:

Выражение Расшифровка Пояснение
(0 < a) && (a < 100)
(0 < a) and (a < 100)
(0 < a) И (a < 100)
(!a) && (!b)
(not a) and (not b)
(НЕ a) И (НЕ b)
!(!a || !b)
not((not a) or (not b))
НЕ((НЕ a) ИЛИ (НЕ b))

2. Примеры использования операторов сравнения и булевых переменных

Там, где можно написать логическое выражение, можно написать и логическую переменную.

Например:

Код Пояснение
int age = 35;
if (age >= 18 && age <= 65)
   System.out.println("Вы можете работать");
Если значение age лежит между 18 и 65, на экран выводится текст «вы можете работать».
int age = 35;
boolean isYoung = (age < 18);
if (!isYoung && age <= 65)
   System.out.println("Вы можете работать");
Мы создали переменную isYoung и вынесли в нее первую часть выражения. Только заменили age >= 18 на age < 18.
int age = 35;
boolean isYoung = (age < 18);
boolean isOld = (age > 65);
if (!isYoung && !isOld)
   System.out.println("Вы можете работать");
Мы создали переменную isOld и вынесли в нее вторую часть выражения. При этом заменили age <= 65 на age > 65.

Эти три примера эквивалентны. Только во втором мы вынесли часть выражения из условия if в отдельную логическую переменную – isYoung. В третьем примере мы вынесли вторую часть выражения во вторую переменную — isOld.


3. Логическая арифметика

Вкратце пройдемся по логическим операциям.

Оператор AND, он же И, он же &&, он же конъюнкция.

Выражение Результат
true && true
true
true && false
false
false && true
false
false && false
false

Другими словами, результат выражения равен true (истина) только если оба значения, которые участвуют в выражении, равны true (истина). В остальных случаях всегда false (ложь).

Оператор OR, он же ИЛИ, он же ||, он же дизъюнкция.

Выражение Результат
true || true
true
true || false
true
false || true
true
false || false
false

Другими словами, результат выражения равен true (истина) всегда, если хотя бы одно значение, участвующее в выражении, равно true (истина). Если оба равны false, то результат false.

Оператор NOT, он же НЕ, он же !, он же инверсия.

Выражение Результат
!true
false
!false
true

Меняет true на false и наоборот.

Полезные выражения:

Выражение Результат
m && !m
false
m || !m
true
!(a && b)
!a || !b
!(a || b)
!a && !b
undefined
4
Задача
Java Syntax Pro, 4 уровень, 3 лекция
Недоступна
Я никогда не буду работать за копейки
Используя цикл while вывести на экран сто раз цитату (переменная quote): «Я никогда не буду работать за копейки. Амиго» Каждое значение вывести с новой строки.
undefined
4
Задача
Java Syntax Pro, 4 уровень, 3 лекция
Недоступна
Все любят Мамбу
Ввести с клавиатуры имя и, используя цикл while, 10 раз вывести: <имя> любит меня (переменная text). Каждый вывод - с новой строки. Пример вывода на экран для имени Света: Света любит меня. Света любит меня. Света любит меня. Света любит меня. Света любит меня. Света любит меня. Света любит меня. Св
undefined
4
Задача
Java Syntax Pro, 4 уровень, 3 лекция
Недоступна
Суммирование
Напишем программу, в которой нужно вводить с клавиатуры целые числа и считать их сумму, пока пользователь не введет слово "ENTER". Вывести на экран полученную сумму и завершить программу.
undefined
4
Задача
Java Syntax Pro, 4 уровень, 3 лекция
Недоступна
Заполненный прямоугольник
Используя вложенные циклы while (цикл в цикле) выведи на экран прямоугольник размером 5 (высота) на 10 (ширина), заполненный буквой 'Q'.
undefined
4
Задача
Java Syntax Pro, 4 уровень, 3 лекция
Недоступна
Незаполненный прямоугольник
Используя вложенные циклы while (цикл в цикле) выведи на экран незаполненный прямоугольник (его контур) размером 10 (высота) на 20 (ширина) из букв 'Б'. Незаполненная часть состоит из пробелов.