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Полезное
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Полезное
Ваше упражнение проверяется по этим тестам
import static org.assertj.core.api.Assertions.assertThat;
class AppTest {
public static void main(String[] args) {
assertThat(App.isPensioner(70)).isTrue();
assertThat(App.isPensioner(50)).isFalse();
assertThat(App.isPensioner(60)).isTrue();
assertThat(App.isPensioner(59)).isFalse();
}
}Решение учителя откроется через:
20:00
