Тип boolean

Открыта

— Привет, Амиго. Хочу рассказать тебе о новом типе данных. Это тип boolean. Переменные этого типа могут принимать всего два значения – true (истина/правда) и false (ложь).

— А как его использовать?

— Этот тип неявно используется во многих местах. Так же, как и результат любого сложения – число, то и результат любого сравнения – истина или ложь – тип boolean. Примеры:

Код Пояснение
1
boolean m;
Два данных выражения эквивалентны. Значение переменой типа boolean по умолчанию false («ложь»).
2
boolean m = false;
3
if (a > b)
    System.out.println(a);
 В переменную m будет записан результат сравнения – true или false. Условие выполняется, если переданное в него выражение истинно – true.
4
boolean m = (a > b);
if (m)
    System.out.println(a);
5
boolean m = (a > b);
if (m == true)
    System.out.println(a);
Не нужно сравнивать логическую переменную (типа boolean) c true или false. Результат сравнения сам будет иметь тип boolean, и в точности будет совпадать со значением сравниваемой переменой: true == true – истина. Результат выражения – true. true == false – ложь. Результат сравнения – false.
6
boolean m = (a > b);
if (m)
    System.out.println(a);

— Еще примеры:

Код Пояснение
1
public boolean isALessThanB (int a, int b)
{
    if (a < b)
        return true;
    else
        return false;
}
Данный метод проверяет, что число А меньше числа Б.

Показаны четыре эквивалентных записи сравнения. Внизу самая компактная и корректная. Всегда старайся использовать компактную запись.

2
public boolean isALessThanB (int a, int b)
{
    boolean m = (a < b);
    if (m)
        return true;
    else
        return false;
}
3
public boolean isALessThanB (int a, int b)
{
    boolean m = (a < b);
    return m;
}
4
public boolean isALessThanB (int a, int b)
{
    return a < b;
}
6
Задача
Java Syntax,  4 уровень,  7 лекция
Недоступна
Набираем код
Иногда думать не надо, строчить надо! Как ни парадоксально звучит, порой пальцы «запоминают» лучше, чем сознание. Вот почему во время обучения в секретном центре JavaRush вы иногда встречаете задания на набор кода. Набирая код, вы привыкаете к синтаксису и зарабатываете немного материи. А ещё — боретесь с ленью.

— А что мне делать, если я хочу записать, выражение 0<a<b?

— Ну, выражений, которые включают три оператора, в Java нет, поэтому тут нужно воспользоваться такой конструкцией: (0<a) И (a<b)

— Так и писать И?

— Подожди, сейчас все объясню. В Java есть три логических оператора: AND (и), OR (или) и NOT (не). С помощью них можно строить условия различной сложности. Эти операторы можно применять только к выражению, имеющему тип boolean. Т.е. (a+1) AND (3) написать нельзя, а (a>1)AND (a<3) – можно.

— Оператор NOT – унарный – его действие распространяется только на выражение справа от него. Он больше похож на знак «минус» перед отрицательным числом, чем на знак умножить

— С переменными типа boolean (логический тип) можно выполнять различные операции.

— А какие?

— Вот сейчас мы их и рассмотрим:

Логический oператор Обозначение в Java Выражение Результат
AND (и) && true && true true
true && false false
false && true false
false && false false
OR (или) || true || true true
true || false true
false || true true
false || false false
NOT(не) ! ! true false
! false true
Распространённые комбинации и выражения m && !m false
m || !m true
! (a && b) !a || !b
! (a || b) !a && !b

— А можно побольше примеров?

— Конечно:

Запись в Java Логическая запись Пояснение
(a<3) && (a>0) (a < 3) AND (a>0) a<3 и a>0
(a>10) || (a<100) (a>10) OR (a<100) a>10 или a<100
(a<b) && (!(c<=d)) (a<b) AND (NOT (c<=d)) a<b и (не (c<=d))

— Реши пока немного задачек.

3
Задача
Java Syntax,  4 уровень,  7 лекция
Недоступна
Ярлыки и числа
Не все ярлыки одинаково полезны, но порой без них образуется хаос. Давайте решим задачу с раздачей ярлыков: пользователь вводит с клавиатуры целое число, а программа ему рассказывает, отрицательное это число или положительное (или нулевое), чётное или нечётное. Зачем нам это? Просто так, для тренировки. Мы же тут учимся, в конце концов!
3
Задача
Java Syntax,  4 уровень,  7 лекция
Недоступна
Описываем числа
Представим себе, что нам нужно разделить числа по каким-то признакам. Например, по чётности или по количеству разрядов. Представили? А теперь за дело: пишем программу, которая описывает введенное пользователем число (оно должно находиться в диапазоне от 1 до 999), указывая в строке вывода, чётное ли это число и сколько в нём цифр.
3
Задача
Java Syntax,  4 уровень,  7 лекция
Недоступна
Положительное число
В школе «Позитивчик» шкала оценки знаний не ограничена ни снизу, ни сверху. Это радует юные дарования (а вы бы не радовались, получив оценку 100500 за изложение?). Все оценки больше нуля считаются хорошими, меньше — плохими. На зачете ученики должны сдать три предмета. Нам нужно ввести три оценки с клавиатуры, и вывести количество позитивных оценок.
3
Задача
Java Syntax,  4 уровень,  7 лекция
Недоступна
Положительные и отрицательные числа
Анализ данных начинается с малого: мы должны понимать, какие данные нам важны и их нужно использовать, а какие нужно отбросить. Решим простую задачу на анализ данных. Введем с клавиатуры три целых числа, затем проанализируем их и выведем на экран количество положительных и отрицательных чисел в исходном наборе.
Комментарии (310)
  • популярные
  • новые
  • старые
Для того, чтобы оставить комментарий вы должны авторизоваться
Artur5 уровень
вчера, 07:46
Немного не догнал вот этого: Выражение ! (a && b) Результат !a || !b Выражение ! (a || b) Результат !a && !b Почему знаки AND и OR поменялись между собой? Запутался в логике :)
Egor5 уровень, Санкт-Петербург
вчера, 09:24
Если раскрываются скобки, то "!" как бы прицепляется ко всему. ! (a && b) - !a !&& !b , а !&& использовать нельзя, поэтому "заменяется" на ||
Artur5 уровень
вчера, 10:43
Значит когда "не AND", то единственный вариант это "OR", и наоборот, теперь вроде понятно. Полезный нюанс, спасибо.
Petr Perminov6 уровень
7 мая, 02:27
Мне очень нравится! Особенно, когда решаешь задачу с первого раза! :)))
Евгений6 уровень
4 мая, 14:22
Последние две через массивы делал. В описываем числа пригодился цикл while. Шилдт тащит.
Bender8 уровень, Минск
22 апреля, 12:47
Ребят, меряться количеством ЧМ это детский сад.
GigaMax12 уровень
22 апреля, 17:42
это точно))) Зачем ЧМ считать, проще все задачи решать ))) или писать сколько пропустил задач на данный момент))))
Евгений6 уровень
28 апреля, 09:53
Согласен. ЧМ на работу устроиться не поможет.
Yaroslav Tikhonov14 уровень, Санкт-Петербург
20 апреля, 11:35
220 ЧМ
Lubomir8 уровень
18 апреля, 20:08
Советую решать с циклом for, кто мало-мальски знаком Задачи не сложные, как раз потренироваться можно отлично и заточить мышление под них
Самуил Олегович12 уровень, Киев
14 апреля, 12:04
209ЧМ
Алексей Клоков17 уровень, Москва
26 марта, 20:16
Почему они сходу называют && - и. Есть &(и), а есть && (укороченное и). Когда прописываешь & он проверяет все условия В случае с && при проверке условий, если одно из условий false, то он не будет дальше проверять. Также |(или) || (укороченное или). При "или" проверяет все условия выражения. При укороченном или он проверяет условия до первого true, как только его находит дальше не проверяет.
Андрей Кутиль15 уровень, Киев
27 марта, 15:24
Потому что & используется в бинарных оператор, для двоичных и шестнадцатеричных числ. Нормальный человек не использует бинарные в обычных логических операциях. Укороченной формы вполне достаточно.
Андрей Кутиль15 уровень, Киев
27 марта, 15:33
Еще вспомнил почему это не важно) Дело в том что в укороченная форма работает так: если первый тру и второй тру то тогда результат проверки тоже тру. Если первый тру, второй фолс то результат порверки фолс. И если первый фолс то дальше укороченная форма не проверяет второе число. Но нам все равно проверят его и не нужно. Первое же фолс. Даже если мы поставим полную версию И то это ничего не поменяет)
Alexander Morkvashyov7 уровень, Самара
31 марта, 09:46
объяснити тогда разницу между true | true true || true true | false true || false false | true false || true false | false false || false
Андрей Кутиль15 уровень, Киев
31 марта, 10:19
Важно понимать что делает "или". Суть "или", если первый или второй аргумент true то результат true . " | " проверяет и первый аргумент и второй. " | | " проверяет первый аргумент, если это true то прекращает проверку. Если же false то проверяет второй аргумент. По этому при логике нету смысла использовать бинарные | , & и тому подобное... true | true true || true не важно true | false - проверяет первый аргумент(true) второй (false) результат = true true || false - проверяет первый аргумент(true) второй не проверяет, результат = true false | true - проверяет первый аргумент(false) второй (true) результат = true false || true проверяет первый аргумент(false), раз фолс проверяет и второй (true) результат = true Если после этого не понятно, я не помогу)
Alexander Morkvashyov7 уровень, Самара
2 апреля, 08:49
я поняль) спасиб
Дмитрий16 уровень, Минск
8 апреля, 10:32
Укороченная форма применяется там, где по условию может быть деление на ноль. Например надо проверить что число a более чем в десять раз превышает число b: т.е. a/b > 10. Но в условии может быть не указано что число b не равно нулю. И тогда если b равно нулю, то выдаст ошибку. Поэтому используется следующая комбинация: b!=0 && a/b > 10 А вариант {b!=0 & a/b > 10} для b=0 выдаст ошибку, так как программа попытается разделить на нуль. Еще подобное может быть, если нужно определить данные в цикле с i-го элемента массива, где i - это счетчик цикла. А вы знаете, что в массиве только лишь n элементов и заранее нет информации что максимальное i не будет превышать n. Ведь обращение к элементу массива a[n+1] выдаст ошибку. Тут и сработает конструкция (i<=n && a[i]>0).
Дмитрий16 уровень
26 марта, 08:35
При <0 валидатор не принимал, с исправлением на <=1 задача решена, но чувство недопонимания осталось.
Alex11 уровень, Одесса
25 марта, 19:48
Решил попробовать if и else не используя циклы. не проходит проверку последнюю " Учесть, что число "0" не относится ни к положительным, ни к отрицательным числам." не пойму что не так( if ((x >= 1) && (y >= 1) && (z >= 1)){ a = 3; } else if ((x <= -1) && (y >= 1) && (z >= 1)){ a = 2; b = 1; } else if ((x <= -1) && (y <= -1) && (z >= 1)){ a = 1; b = 2; } else if ((x <= -1) && (y <= -1) && (z <= -1)){ b = 3; } else if ((x >= 1) && (y <= -1) && (z >= 1)){ a = 2; b = 1; } else if ((x >= 1) && (y <= -1) && (z <= -1)){ a = 1; b = 2; } else if ((x >= 1) && (y >= 1) && (z <= -1)){ a = 2; b = 1; } else if ((x <= -1) && (y >= 1) && (z <= -1)){ a = 1; b = 2; } else if ((x == 0) && (y == 0) && (z == 0)){ }
George20 уровень
29 марта, 20:50
По вашему алгоритму ни одно условие не будет истина, если есть хотя бы один ноль. То есть набор чисел 1 0 2 Выведет: количество отрицательных чисел: 0 количество положительных чисел: 0 Хотя правильным будет: количество отрицательных чисел: 0 количество положительных чисел: 2