Тип 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 лекция
Недоступна
Положительные и отрицательные числа
Анализ данных начинается с малого: мы должны понимать, какие данные нам важны и их нужно использовать, а какие нужно отбросить. Решим простую задачу на анализ данных. Введем с клавиатуры три целых числа, затем проанализируем их и выведем на экран количество положительных и отрицательных чисел в исходном наборе.
Комментарии (326)
  • популярные
  • новые
  • старые
Для того, чтобы оставить комментарий вы должны авторизоваться
Дмитрий4 уровень, Волгоград
вчера, 15:58
Не зря матлогику учил=)
Марат6 уровень, Penza
13 июля, 11:50
Я просто добавил все три числа в массив и прокрутил их в цикле for
Артем Сычев4 уровень
позавчера, 12:40
Аналогично)
Ihor Biedin11 уровень, Днепр
8 июля, 15:27
А исключающее или (^) ?
Денис6 уровень, Самара
12 июля, 20:09
https://docs.oracle.com/javase/tutorial/java/nutsandbolts/opsummary.html в официальной документации на JDK8 данные операции относятся к битовым операциям сравнения (отличаются от основных, например И > &, ИЛИ > |). При таких операциях сравнение будет происходить не в десятичном представлении, а в двоичном (1001, например). Например, для твоего случая, при сравнении a ^ b(исключающее ИЛИ) при сравнении позиций битов будет возвращаться 1 ТОЛЬКО в тех позициях, где 1 у одного, у второго 0. А при сравнении a | b будет возвращаться 1 в тех позициях, где хотя бы у одного из операндов будет 1. Тут в большинстве случаев операции сравнения производятся на числами в десятичной форме. Вот еще статья, если заинтересовал данный вопрос: https://www.tutorialspoint.com/java/java_basic_operators
Евгения9 уровень, Екатеринбург
8 июля, 13:04
Что за комментарий компилятора "файл файл файл"? О_О
Nadin9 уровень, Омск
17 июня, 10:34
Ну главное вовремя))))
petros6 уровень
10 июня, 17:06
есть какой-то портал с выложенными правильными решения задач? я не к тому, что я не могу их решить, просто хочется проверять не просто работает код или нет, а варианты решения именно опытных программеров.
Ner'Zhul10 уровень
11 июня, 04:50
где читал что есть и выложено на GitHub. Поищи. А вообще это ни к чему.
n10z7 уровень, Москва
11 июня, 20:29
я бы тоже не отказался от такого, почему же не к чему? Сравнить свой код на компактность и логичность выполнения с опытными участниками проекта это хорошо. Как раз мы учимся, а потом при сравнении ещё раз учимся)). Есть обучающие порталы, где это доступно.
Андрей8 уровень, Минск
24 июня, 14:44
слева нажимаете "задачи" - вбиваете в поиск номер задачи - смотрите комменты. иногда очень полезно
Екатерина4 уровень, Москва
9 июня, 16:43
не понимаю, зачем нужно (!(c<=d))? Можно было написать (c>d)
Dmitry7 уровень, Минск
24 июня, 20:50
очень помогает при редактировании кода, чтобы не переписывать проще поставить !
Alanser26 уровень, Кокшетау
9 июня, 13:30
Кто нибудь печатает набор кода? ) Я в задачах так напечатываюсь, хватает с головой. А здесь ctrl+A, ctrl+C и ctrl+V
Екатерина4 уровень, Москва
9 июня, 17:35
я печатаю)) хорошо запоминается = мышечная память))
Artur16 уровень, Tallinn
23 мая, 07:46
Немного не догнал вот этого: Выражение ! (a && b) Результат !a || !b Выражение ! (a || b) Результат !a && !b Почему знаки AND и OR поменялись между собой? Запутался в логике :)
Egor19 уровень, Санкт-Петербург
23 мая, 09:24
Если раскрываются скобки, то "!" как бы прицепляется ко всему. ! (a && b) - !a !&& !b , а !&& использовать нельзя, поэтому "заменяется" на ||
Artur16 уровень, Tallinn
23 мая, 10:43
Значит когда "не AND", то единственный вариант это "OR", и наоборот, теперь вроде понятно. Полезный нюанс, спасибо.
Petr Perminov6 уровень
7 мая, 02:27
Мне очень нравится! Особенно, когда решаешь задачу с первого раза! :)))