JavaRush /Курсы /Java Syntax Pro /Логический тип boolean

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

Java Syntax Pro
3 уровень , 2 лекция
Открыта

1. Тип boolean

Как мы уже убедились, в Java есть очень полезный оператор — if-else. Он выполняет один блок команд, если условие в скобках истинно, и второй блок команд, если условие ложно.

Чтобы было удобно работать с выражениями, которые могут быть истинными или ложными, в Java добавили специальный тип — boolean. Его главная особенность заключается в том, что переменные этого типа могут принимать всего два значения: true (истина) и false (ложь).

Никакие другие значения присвоить переменным типа boolean невозможно. Компилятор не позволит.

И зачем же нужен такой примитивный тип?

Все дело в том, что в него можно сохранять значения логических выражений. Пример:

Код Пояснение
boolean isOK = true;
Логическая переменная isOK содержит значение true (истина)
boolean hasError = false;
Логическая переменная hasError содержит значение false (ложь)
int age = 70;
boolean isSenior = (age > 65);
Логическая переменная isSenior содержит значение true (истина)
int record = 612;
int value = 615;
boolean hasNewRecord = (value > record);
Логическая переменная hasNewRecord содержит значение true (истина)
int min = 0;
int max = 100;
int temperature = -20;
boolean isIce = (temperature < min);
boolean isSteam = (temperature > max);

Логическая переменная isIce содержит значение true (истина)

Логическая переменная isSteam содержит значение false (ложь)


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

От булевых переменных было бы мало толку, если бы в них можно было только сохранять результаты выражений. Все дело в том, что их можно еще и использовать. Где? Да везде, где можно написать логическое выражение.

Например, логическую переменную можно подставить в условие if-а:

Код Эквивалент
int age = 70;
boolean isSenior = (age > 65);
if (isSenior)
   System.out.println("Пора на пенсию");
int age = 70;
if (age > 65)
   System.out.println("Пора на пенсию");

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



3. Операторы сравнения

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

Оператор Пояснение Пример
< Меньше a < 10
> Больше b > a
<= Меньше либо равно a <= 10
>= Больше либо равно speed >= max
== Равно age == 18
!= Не равно time != 0

Результатом действия каждого из приведенных операторов будет логическое выражение. Его можно сохранить в переменную типа boolean, ну или использовать в качестве условия в if.

Важный момент 1:

Операторы, состоящие из двух символов, разрывать нельзя.

Т.е. такой код компилироваться не будет:

a < = 10
speed > = max
age = = 18
time ! = 0
Важный момент 2:

Обратите внимание, что операторов => и =< нет: есть только <= и >=. Если вы напишете a =< 3, ваш код просто не скомпилируется.

Важный момент 3:

В Java вы не можете записать выражение вида 18 < age < 65. Ведь у выражения 18 < age будет значение true или false. А сравнивать true < 65 (разные типы) нельзя. По крайней мере, в языке Java.

И что же делать? Ответ на этот вопрос вы найдете в следующей лекции.



Комментарии (716)
ЧТОБЫ ПОСМОТРЕТЬ ВСЕ КОММЕНТАРИИ ИЛИ ОСТАВИТЬ КОММЕНТАРИЙ,
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ
Anonymous #6473329 Уровень 1
17 февраля 2026
public class t2 { public static void main(String[] args) { Scanner console = new Scanner(System.in); int one = console.nextInt(); int two = console.nextInt(); int three = console.nextInt(); if (one==two) if (two==three) System.out.println("" + one +" "+ two +" "+ three); else System.out.println("" + one +" "+ two); else if (one==three) System.out.println("" + one +" "+ three); else if (two==three) System.out.println("" + two +" "+ three); } }
Ramil Уровень 3
9 ноября 2025
public class Solution { public static void main(String[] args) { Scanner console = new Scanner(System.in); int a = console.nextInt(); int b = console.nextInt(); int c = console.nextInt(); if (a == b && b == c){ System.out.print(a + " " + b + " " + c); } if (a == b){ System.out.print(a + " " + b); } if (b == c){ System.out.println(b + " " + c); } if (a == c){ System.out.print(a + " " + c); } не понимаю почему не принимает как правильное решение.....
Komarov Уровень 4
10 ноября 2025
Ты используешь if, а не if else. В твоём случае у тебя могут срабатывать все условия одновременно.
11qfour Уровень 8
13 января 2026
Ошибка: ты проверяешь подряд все условия и, при вводе трех равных числах, ты получишь в выводе четыре строки: равны три числа, равны первое и второе, равны второе и третье, равны первое и третье. А должен был получить только первую. Решение: перед выражениями (a == b), (b == c), (a == c) поставь ключевые слова else if. Теперь ты будешь проверять условия после первого только если первое не верно.
Anonymous #3529131 Уровень 4
14 октября 2025
public class Solution { private static boolean isa; private static boolean isb; private static boolean isc; private static boolean isabc; public static void main(String[] args) { Scanner scanner = new Scanner(System.in); int a = scanner.nextInt(); int b = scanner.nextInt(); int c = scanner.nextInt(); isa = (a==b && a != c && b != c); isb = (a==c && a != b && b != c); isc = (b==c && a != b && a != c); isabc = (a == b && a == c && b == c); if (isa){ System.out.println(" " + a + " " + b);} if (isb){ System.out.println(" " + a + " " + c);} if (isc){ System.out.println(" " + b + " " + c);} if (isabc){ System.out.println(" " + a + " " + b + " " + c);} } }
Anton Petrov Уровень 17
16 февраля 2026
Отличное решение! Только какой тут смысл boolean'ы в static выносить?
Paul Sheptovitsky Уровень 5
14 сентября 2025
public class Solution { public static void main(String[] args) { Scanner xxx=new Scanner(System.in); int a=xxx.nextInt(); int b=xxx.nextInt(); int c=xxx.nextInt(); if(a==b&&b==c) System.out.println(a+" "+b+" "+c); else if (a==b) System.out.println(a+" "+b); else if(c==a) System.out.println(c+" "+a); else if(c==b) System.out.println(c+" "+b);
Anonymous #3397071 Уровень 4
4 сентября 2025
если ввожу цифру 37 в 1 задаче он показывает что температура тела нормальная, тут две ошибки, то что 37 это не нормальная температура, и в объявлении значения isHigh нужно указать >=37, чтоб 37 выдавала высокую температуру
Leshasem Уровень 2
18 августа 2025
Scanner sc = new Scanner(System.in); int x = sc.nextInt(); int y = sc.nextInt(); int z = sc.nextInt(); if(x == z && x == y){ System.out.println(x + " " + y + " " + z); } else if (x == z) { System.out.println(x + " " + z); } else if (x == y) { System.out.println(x + " " + y); } else if(z == y){ System.out.println(z + " " + y); }
Big198801 Уровень 33
13 августа 2025
public static void main(String[] args) { //напишите тут ваш код Scanner sc = new Scanner(System.in); int num1 = sc.nextInt(); int num2 = sc.nextInt(); int num3 = sc.nextInt(); Boolean isEquals = ((num1 == num2) & (num2 == num3)); Boolean halfEquals = ((num1 == num2)||(num2 == num3)||(num1 ==num3)); if(isEquals) System.out.println(num1 + " " +num2 + " " + num3); else if(halfEquals){ if(num1 == num2) System.out.println(num1 + " " +num2); if(num2 ==num3) System.out.println(num2 + " " +num2); if(num1 ==num3) System.out.println(num1 + " " +num3); } }
Анжелика Уровень 1
12 августа 2025
Написала после Scanner consol=new Scanner(System.in); вот это System.out.println("Введите три целых числа"); В итоге "Убедись, что вывод соответствует примеру.". Не пишите лишнего! Полчаса потрачено впустую(((((((((
ProXorek Уровень 8
23 июля 2025
До java я js изучал и с моим опытом вспомнил про return, вставил его и получилось, думал правильно сделал, а потом зашел в комменты и понял что наюлил, Но все равно ответ правильный public class Solution { public static void main(String[] args) { //напишите тут ваш код Scanner arg1 = new Scanner(System.in); Scanner arg2 = new Scanner(System.in); Scanner arg3 = new Scanner(System.in); int a1 = arg1.nextInt(); int a2 = arg2.nextInt(); int a3 = arg3.nextInt(); if (a1 == a2){ if (a2 == a3) { System.out.println(a1+" "+a2+" "+a3); return; } System.out.println(a1+" "+a2); } else if (a1 == a3){ System.out.println(a1+" "+a3); } else if (a2== a3){ System.out.println(a2+" "+a3); } } }
Pavelpervak Уровень 9
13 июня 2025
package com.javarush.task.pro.task03.task0305; import java.util.Scanner; /* Три числа */ public class Solution { public static void main(String[] args) { //напишите тут ваш код Scanner console = new Scanner(System.in); int num1 = console.nextInt(); int num2 = console.nextInt(); int num3 = console.nextInt(); if ((num1 == num2) && (num1 == num3)) System.out.println(num1+" "+num2+" "+num3); else if (num1 == num3) System.out.println(num1+" "+num3); else if (num2 == num3) System.out.println(num2+" "+num3); else if (num1 == num2) System.out.println(num1+" "+num2); } } Почему первое условие идет на проверку 3х значений? Все из-за логики построения программы. Некоторые в комментариях вставляют эту проверку вконец, из-за чего нарушается логическая структура программы. Первым действием мы должны сравнить не равны ли они вообще все, а потом уже пробежаться по каждом числу и сравнивать их друг с другом. Глобальной проверкой всех введенных значений, Вы позволяете себе исключить все оставшиеся значения вне вашего if, if else ( если проше, то после проверки 3х переменных на равенство Вы командой else отсеиваете все оставшиеся случаи (из условия: "Если нет равных чисел, ничего не выводить."), а if else-ами вы уже настраиваете логику среди оставшихся цифр, введенных пользователем.
Дмитрий Уровень 7
7 января 2026
Спасибо большое! Не очевидно было для меня🤣