JavaRush /Курси /Java Syntax Zero /Логічний тип boolean

Логічний тип boolean

Java Syntax Zero
Рівень 3 , Лекція 5
Відкрита

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.

І що ж робити? Відповідь на це питання ви знайдете в наступній лекції.


Коментарі (43)
ЩОБ ПОДИВИТИСЯ ВСІ КОМЕНТАРІ АБО ЗАЛИШИТИ КОМЕНТАР,
ПЕРЕЙДІТЬ В ПОВНУ ВЕРСІЮ
Valentyn Рівень 10
27 червня 2025
Коли перевірка на три числа стояла останньою, вимога не виконувалася. Коли її поставив першою - все виконалося. Чому так? Це принципово, щоб вона стояла з самого початку?
Volodymyr Рівень 48
11 липня 2025
Тому що при всіх рівних значеннях вираз буде перехоплено вище перевірки, коли всі 3 значення рівні. Наприклад а = 2, b = 2, c = 2. В тебе перша перевiрка буде наприклад if (a == b) то ця вимога буде виконана а все iнше нижче проiгноровано.
Nazar Рівень 6
18 вересня 2025
Тому щоб вираз не перехоплювався, в умові наших if-ів можна дописати умову, що одне з двох рівних між собою чисел не дорівнює третьому. В коді це виглядатиме ось так:

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.print(num1 + " " + num2);
        } else if (num1 == num3 && num1 != num2){
            System.out.print(num1 + " " + num3);
        } else if (num2 == num3 && num2 != num1){
            System.out.print(num2 + " " + num3);
        } else if (num1 == num2 && num2 == num3){
            System.out.print(num1 + " " + num2 + " " + num3);
        }
    }
Dmytrii Рівень 28
30 травня 2024
Почему не принимает решение?

       if (bodyTemperature > 37) isHigh = true;
       else if (bodyTemperature < 36) isLow = true;
Кирило Рівень 43
2 червня 2024
isHigh = (bodyTemperature > 37); isLow = (bodyTemperature < 36); так проще и правильно
Dmytrii Рівень 28
2 червня 2024
оно то да, только и с ифами тоже самое делает, но не принимает)
Владислав Рівень 1
17 травня 2025
Сделал так же, программа по логике работает, но не принимает все решение. ругалось на скобки..
Anonymous #6428176 Рівень 3
19 січня 2026
Повино бути простіше if (isHigh) { System.out.println("текст"); } else if (isLow){ System.out.println("текст");
Станіслав Рівень 20
20 березня 2024
Не можу зрозуміти, код працює, але завдання не приймаєця.
De Stroy Рівень 10
4 квітня 2024
Візьміть умову в круглі дужки.
Volodymyr Рівень 48
11 липня 2025
В тебе в рядках 10 та 11 змiннi isHigh та isLow вже створеннi. A в рядках 16, 17 ты створюеш новi.
Anonymous #3425794 Рівень 11
14 березня 2024
Scanner sc = new Scanner(System.in); int a = sc.nextInt(); int b = sc.nextInt(); int c = sc.nextInt(); if (a == b && a == c) System.out.println(a + " " + b + " " + c); else if (a == b) System.out.println(a + " " + b); else if (a == c) System.out.println(a + " " + c); else if (b == c) System.out.println(b + " " + c);


NTester Рівень 8
4 вересня 2023
Ва Дим Рівень 28
2 березня 2024
а що якщо с == а? що твій код зробить ?
20 липня 2023
if (a==b&&a!=d){ System.out.println(a+" "+b); } if (b==d&&b!=a){ System.out.println(b+" "+d); } if (a==d&&d!=b){ System.out.println(a+" "+d); } if (a==b&&b==d){ System.out.println(a+" "+b+" "+d); Як на мене мені так простійше
Stonz Рівень 6
5 грудня 2022
ось альтернатива... Scanner a = new Scanner(System.in); int b = a.nextInt(); int c = a.nextInt(); int d = a.nextInt(); if (b == c || b == d) System.out.print(b + " "); if (c == b || c == d) System.out.print(c + " "); else if (c == b && c!= d) System.out.print(c); if (d == b || d == c) System.out.print(d);
Ва Дим Рівень 28
2 березня 2024
в чому задумка цього коду ? цікаво

    else if (c == b && c!= d)
    System.out.print(c);
якщо c дорівнює b то срацює верхній if і пропуститься else if. якщо ж c не дорівнює b то пропускається і if і else if переходячи до останнього іf
Without173 Рівень 32
30 листопада 2022
public class Solution { public static void main(String[] args) { //напишіть тут ваш код Scanner scanner = new Scanner(System.in); int value1 = scanner.nextInt(); int value2 = scanner.nextInt(); int value3 = scanner.nextInt(); if (value1 == value2 && value2 == value3) { System.out.println(value1 + " " + value2 + " " + value3); } else if (value1 == value2) { System.out.println(value1 + " " + value2); } else if (value1 == value3) { System.out.println(value1 + " " + value3); } else if (value2 == value1) { System.out.println(value2 + " " + value1); } else if (value2 == value3) { System.out.println(value2 + " " + value3); } else if (value3 == value1) { System.out.println(value3 + " " + value1); } else if (value3 == value2) { System.out.println(value3 + " " + value1); } else { } } }
Anonymous #3312433 Рівень 5
30 червня 2023
Дві останні дії зайві)
Abver Рівень 4 Expert
29 листопада 2022
public class Solution { public static void main(String[] args) { Scanner scn = new Scanner(System.in); int a = scn.nextInt(); int b = scn.nextInt(); int c = scn.nextInt(); boolean ab = (a==b); boolean ac = (a==c); boolean bc = (b==c); boolean abc = (a==b && b==c); if (abc) { System.out.println(a+" "+b+" "+c); } else if (ac){ System.out.println(a+" "+c); } else if (bc){ System.out.println(b+" "+c); } else if (ab){ System.out.println(a+" "+b); } } } А мені ось так прийшло в голову)
Taras Woytowitch Рівень 16
26 грудня 2022
Поки ще можливо && не використовуємо, а можемо boolean abc = (ab==bc); так то ідея гарна, я похоже зробив, тільки не використовував булін, а порівнював в іф)
Ivan Kravets Рівень 22
19 листопада 2023
ідея прикольна але фігня получається аb=false bc=false abc=false==false=> результат буде true і як наслідок виведе всі три числа
Гаркін Рівень 14
7 лютого 2024
Тоді ось код public static void main(String[] args) { Scanner scanner = new Scanner(System.in); int a = scanner.nextInt(); int b = scanner.nextInt(); int c = scanner.nextInt(); boolean ab = (a==b); boolean ac = (a==c); boolean cb = (b==c); if (ab) { if (b==c) { System.out.println(a + " " + b + " " + c ); } else { System.out.println(a + " " + b ); } } else { if (cb) { System.out.println(b + " " + c ); } else { if (ac) { System.out.println(a + " " + c ); } } } scanner.close(); }
Roman N Рівень 4
12 листопада 2022
package ua.javarush.task.pro.task03.task0305; import java.util.Scanner; public class Solution { private static boolean A; private static boolean B; private static boolean C; private static boolean D; public static void main(String[] args) { Scanner console = new Scanner(System.in); int a = console.nextInt(); int b = console.nextInt(); int c = console.nextInt(); D = (a == b && a == c); A = a == b; B = a == c; C = b == c; if (D) { System.out.println(a); System.out.println(b); System.out.println(c); } else if (B) { System.out.println(a); System.out.println(c); } else if (C) { System.out.println(b); System.out.println(c); } else if (A) { System.out.println(a); System.out.println(b); } } }
Anonymous #3312433 Рівень 5
30 червня 2023
Жоска))