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

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

Открыта

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.

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



Комментарии (705)
  • популярные
  • новые
  • старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
LieshBan
Уровень 11
13 октября, 14:53
public class Solution {
    public static void main(String[] args) {
        Scanner console = new Scanner(System.in);

        int first = console.nextInt();
        int second = console.nextInt();
        int third = console.nextInt();

        boolean one = first == second;
        boolean two = first == third;
        boolean three = second == third;

        if ((one | two | three) & (one & two) == false) {
            if (one)
                System.out.println(first + " " + second);
            if (two)
                System.out.println(first + " " + third);
            if (three)
                System.out.println(second + " " + third);
        }
        else if (one & two) {
            System.out.println(first + " " + second + " " + third);
        }
    }
}
Дмитрий
Уровень 7
24 сентября, 16:41
public class Solution {
    public static void main(String[] args) {
    Scanner scanner = new Scanner(System.in);
    int n1 = scanner.nextInt();
    int n2 = scanner.nextInt();
    int n3 = scanner.nextInt();
    boolean n1n2 = (n1 == n2);
    boolean n1n3 = (n1 == n3);
    boolean n2n3 = (n2 == n3);
    boolean n1n2n3 = (n1 == n2 && n1 == n3);

    if (n1n2n3)
       System.out.println(n1 + " " + n2 + " " + n3);
    else if (n1n2)
       System.out.println(n1 + " " + n2);
    else if (n1n3)
       System.out.println(n1 + " " + n3);
    else if (n2n3)
       System.out.println(n2 + " " + n3);
cvndidvt
Уровень 4
13 сентября, 20:21
Среднее количество попыток 5.7🤧
Генрих QA Automation Engineer
10 июля, 14:56
Получился вот такой код, постарался сделать максимально компактным
package com.javarush.task.pro.task03.task0305;

import java.util.Scanner;



public class Solution {
    public static void main(String[] args) {

        Scanner number = new Scanner(System.in);
        int a = number.nextInt();
        int b = number.nextInt();
        int c = number.nextInt();

        if (a == b && b == 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);
        }

    }
}
SomeJavaCoderGame QA Tester в Restoration Games
25 апреля, 01:04
Одни из вариантов решения последних задач | | | v
public class Solution {
    public static void main(String[] args) {

        Scanner sc = new Scanner(System.in);

        int a = sc.nextInt();
        int b = sc.nextInt();
        int c = sc.nextInt();

        if (a == b && a == c && b == 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);
        }
    }
}
Где, && - Операция "И" (если а И b И с – равны, то... Выводим все сразу (В следующей лекции будет больше понятно) Или, так, кому как больше нравится
public class Solution {
    public static void main(String[] args) {

        Scanner sc = new Scanner(System.in);

        int a = sc.nextInt();
        int b = sc.nextInt();
        int c = sc.nextInt();

        if (a == b && a == c && b == 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);
        }
    }
}
Старайтесь всегда скобки использовать, так меньше путаницы, как по мне...
Anonymous #6473329
Уровень 1
17 февраля, 10:36
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, 22:29
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, 06:01
Ты используешь if, а не if else. В твоём случае у тебя могут срабатывать все условия одновременно.
11qfour
Уровень 2
13 января, 20:29
Ошибка: ты проверяешь подряд все условия и, при вводе трех равных числах, ты получишь в выводе четыре строки: равны три числа, равны первое и второе, равны второе и третье, равны первое и третье. А должен был получить только первую. Решение: перед выражениями (a == b), (b == c), (a == c) поставь ключевые слова else if. Теперь ты будешь проверять условия после первого только если первое не верно.
Anonymous #3529131
Уровень 4
14 октября 2025, 11:23
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
Уровень 39
16 февраля, 06:09
Отличное решение! Только какой тут смысл boolean'ы в static выносить?
Paul Sheptovitsky
Уровень 5
14 сентября 2025, 08:17
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, 12:25
если ввожу цифру 37 в 1 задаче он показывает что температура тела нормальная, тут две ошибки, то что 37 это не нормальная температура, и в объявлении значения isHigh нужно указать >=37, чтоб 37 выдавала высокую температуру