/
Программирование
/
Курс Java
/

Логический тип

Java: Логический тип

Кроме арифметических операций, из школьной математики нам известны еще и операции сравнения, например 5 > 4 или 3 < 1. Они есть и в программировании. Сравнения часто применяются в реальных задачах, связанных с числами. Когда мы оформляем покупку в интернет-магазине, система проверяет, хватает ли у пользователя денег на счете. Если сумма на счете больше или равна цене товара, заказ подтверждается. При нехватке средств появляется сообщение об ошибке.

Сравнение в программировании

Начнем с примера, в котором сравниваются два числа. Результат сравнения выводим на экран:

System.out.println(5 > 4); // => true
System.out.println(4 > 4); // => false

Результат сравнения — это значение типа boolean. У этого типа всего два возможных варианта, true и false. Это специальные значения языка, их можно выводить напрямую:

System.out.println(true);  // => true
System.out.println(false); // => false

На практике их редко используют так напрямую, но на их основе строится логика поведения программы. Мы сталкиваемся с этим каждый день, когда вводим пинкоды и пароли, когда выполняем действия с разными возможными исходами. Все эти варианты прописаны внутри программы в виде условных выражений. Программа рассуждает примерно так: если так, делай раз, если по-другому, делай два.

В Java доступны следующие операции сравнения:

  • < — меньше
  • <= — меньше или равно
  • > — больше
  • >= — больше или равно
  • == — равно
  • != — не равно

Языки программирования адаптировали все математические операции сравнения в неизменном виде, кроме операторов равенства и неравенства. В математике для равенства используется обычное =, но в программировании символ = присваивает переменным значения. Поэтому в Java сравнивают с помощью ==. Несколько примеров с выводом результата на экран:

System.out.println(5 >= 3); // => true
System.out.println(7 < 0);  // => false
System.out.println(5 > 5);  // => false
System.out.println(5 >= 5); // => true
System.out.println(2 == 5); // => false
System.out.println(2 != 5); // => true

Любую операцию сравнения можно сохранить в переменную типа boolean, а потом вывести:

boolean result = 5 > 4;
System.out.println(result); // => true

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

public static boolean isInfant(int age) {
    return age < 1;
}

Единственной строкой метода мы пишем "вернуть то значение, которое получится в результате сравнения age < 1". В зависимости от пришедшего аргумента сравнение будет либо истинным (true), либо ложным (false). Метод вернет этот результат:

System.out.println(App.isInfant(3)); // => false
System.out.println(App.isInfant(1)); // => false
System.out.println(App.isInfant(0)); // => true

Предикаты

Когда методы возвращают результат сравнения, они отвечают на вопрос "да" или "нет". Такие методы называют предикатами. Их узнают по тому, что они возвращают логическое значение true или false. Часто в названии предиката стоит вопрос или утверждение, которое можно проверить (is, has, can, was). Вот метод, проверяющий, отрицательное ли число:

public static boolean isNegative(int number) {
    // Проверяем, меньше ли число нуля
    return number < 0;
}

System.out.println(App.isNegative(-5)); // => true
System.out.println(App.isNegative(7));  // => false

Метод isNegative собирает условие внутри, а наружу отдает короткий ответ. Так вычисление прячется за понятным именем.

Задание

Реализуйте метод isPensioner(), который принимает один параметр — возраст человека, и проверяет, является ли он пенсионным. Пенсионером считается человек, достигший возраста 60 лет и больше.

Примеры вызова:

App.isPensioner(75); // true
App.isPensioner(18); // false

Полезное

Команда проекта находится в телеграм-сообществе. Там можно задать любой вопрос и повлиять на проект

Нашли ошибку? Есть что добавить? Пулреквесты приветствуются