Кроме арифметических операций, из школьной математики нам известны еще и операции сравнения, например:
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