Кроме арифметических операций, из школьной математики нам известны еще и операции сравнения, например:
5 > 4
Это звучит как вопрос: «Пять больше четырех?». В данном случае, ответ «да». В других случаях, ответом может быть «нет», например, для такого выражения:
3 < 1
Операции сравнения не имеют привязки к числам. Сравнивать можно практически что угодно — например, строки. Когда мы входим на какой-то сайт, внутри происходит сравнение введенного логина и пароля с теми, какие есть в базе. Если совпадение есть, то происходит авторизация.
Языки программирования адаптировали все математические операции сравнения практически в неизменном виде. Единственное серьезное отличие – операторы равенства и неравенства.
В математике для этого используется обычное равно =
, но в программировании такое встречается нечасто. Во многих языках символ =
используется для присваивания значений переменным, поэтому для сравнения взяли ==
.
Список операций сравнения в Java:
<
— меньше<=
— меньше или равно>
— больше>=
— больше или равно==
— равно!=
— не равно
Посмотрим на пару примеров логических операций:
5 > 4
password == text
Оба примера — это выражения. Результат вычисления этих выражений — это одно из двух специальных значений:
true
— «истина»false
— «ложь»
Это новый для нас тип данных — boolean. Он содержит всего лишь два этих значения. Так выглядит пример кода с ним:
var result = 5 > 4;
System.out.println(result); // => true
Попробуем написать метод, который принимает на вход возраст ребенка и определяет, младенец ли он. Младенцами считаются дети до года:
// Метод, возвращающий boolean, называется предикатом
// Обычно такие методы имеют префикс has, can, is, was и так далее
public static boolean isInfant(int age) {
return age < 1;
}
Пользуемся тем фактом, что любая операция — это выражение. Поэтому единственной строчкой функции пишем «вернуть то значение, которое получится в результате сравнения age < 1
».
В зависимости от пришедшего параметра, сравнение будет либо истинным (true
), либо ложным (false
). В итоге return
вернет этот результат:
System.out.println(App.isInfant(3)); // => false
System.out.println(App.isInfant(0)); // => true