Учитель kim

Тип 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;
}
Учитель kim
2
Задача
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))

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

Учитель diego
4
Задача
Java Syntax,  4 уровень,  7 лекция
Недоступна
Ярлыки и числа
Не все ярлыки одинаково полезны, но порой без них образуется хаос. Давайте решим задачу с раздачей ярлыков: пользователь вводит с клавиатуры целое число, а программа ему рассказывает, отрицательное это число или положительное (или нулевое), чётное или нечётное. Зачем нам это? Просто так, для тренировки. Мы же тут учимся, в конце концов!
Учитель diego
4
Задача
Java Syntax,  4 уровень,  7 лекция
Недоступна
Описываем числа
Представим себе, что нам нужно разделить числа по каким-то признакам. Например, по чётности или по количеству разрядов. Представили? А теперь за дело: пишем программу, которая описывает введенное пользователем число (оно должно находиться в диапазоне от 1 до 999), указывая в строке вывода, чётное ли это число и сколько в нём цифр.
Учитель diego
4
Задача
Java Syntax,  4 уровень,  7 лекция
Недоступна
Положительное число
В школе «Позитивчик» шкала оценки знаний не ограничена ни снизу, ни сверху. Это радует юные дарования (а вы бы не радовались, получив оценку 100500 за изложение?). Все оценки больше нуля считаются хорошими, меньше — плохими. На зачете ученики должны сдать три предмета. Нам нужно ввести три оценки с клавиатуры, и вывести количество позитивных оценок.
Учитель diego
4
Задача
Java Syntax,  4 уровень,  7 лекция
Недоступна
Положительные и отрицательные числа
Анализ данных начинается с малого: мы должны понимать, какие данные нам важны и их нужно использовать, а какие нужно отбросить. Решим простую задачу на анализ данных. Введем с клавиатуры три целых числа, затем проанализируем их и выведем на экран количество положительных и отрицательных чисел в исходном наборе.
Комментарии (375)
  • популярные
  • новые
  • старые
Для того, чтобы оставить комментарий вы должны авторизоваться
вчера, 08:38
Уважаемые знатоки, внимание на экран. В примерах говорится, что були по умолчанию инициализируются в false: Зачем же тогда Идеюшка на меня ругается? Мне не сложно добавить =false 2 раза, но все же хочется понимать...
Nilchman5 уровень, Москва
вчера, 17:41
Я не знаток, но понимаю так: Во-первых намеренная "не инициализация" переменных не является хорошим тоном в программировании, даже если такое возможно. Кроме того, автоматическое присваивание значений не более чем механизм защиты от появления неконтролируемых ошибок. Во-вторых значение по умолчанию для, например, ссылочных объектов есть null, и попытка вызвать метод объекта указывающего в никуда ничем хорошим не кончится. А алгоритмы в IDE, видимо, не делают различий между типами не инициализированных переменных. И правильно, как по мне.
Алекс5 уровень, Харьков
позавчера, 06:37
Да, неплохо бы было если бы тесты были регистро-независимыми и не требовали "е" вместо "ё". Думаю среднее число попыток бы сразу уменьшилось :) Тоже напоролся и на то и на другое. Будьте внимательны, а ещё лучше просто копировать тот текст, которые требуется вывести :)
Дмитрий4 уровень, Ярославль
воскресенье, 07:05
Ребят, а кто вообще понял, что значит это сравнение с минусом и умножением: — Оператор NOT – унарный – его действие распространяется только на выражение справа от него. Он больше похож на знак «минус» перед отрицательным числом, чем на знак умножить
Dmitriy Nomerovskiy6 уровень
воскресенье, 10:38
Если выражение, стоящее справа от знака истинно, то оно становится ложным. И наоборот. if (!true){ System.out.print("Не будет выведено"); }
Дмитрий4 уровень, Ярославль
воскресенье, 11:13
Да, это понимаю. Я имею ввиду саму аналогию с минусом и умножением не понял)
вчера, 08:40
Ну соответственно, в отличие от унарного !, на результат выражения с && и || влияют значения и слева, и справа от знака
Александр4 уровень, Санкт-Петербург
вчера, 18:01
Имеется ввиду, что a*b = b*a . Но для минуса так не пойдет a-b = -b +a
Владимир К6 уровень, Омск
суббота, 11:07
С буквой ё самая бодрая ошибка, постоянно попадаюсь ...
Yan6 уровень, Екатеринбург
7 сентября, 18:00
Я почему-то все задачи решил без boolean. Потом понял, что надо было всё-таки иногда хотя бы использовать доп функцию.
Мария6 уровень, Киев
4 сентября, 08:23
Ребята, кому не тяжело, помогите(объясните) как решать задачи с этой лекции иным способом, не через if-else if Пожалуйста, а то у меня паническое ощущение, что я что-то делаю не так
Дмитрий Кудрявцев17 уровень, Омск
4 сентября, 10:49
Создаём массив или список целых чисел, заполняем его и циклом по нему проходимся.
Мария6 уровень, Киев
6 сентября, 11:24
мне кажется, что задачи нужно решать по теме, в которой они есть. Что никто не решил задачу через boolean???
Igor Rudnev7 уровень, Новокузнецк
6 сентября, 12:57
Здесь можно решить все задания через if else if.... сам сидел последнее задание решал очень долго, без циклов и т.п. через if else if п.с. у тебя все получится!)
Дмитрий Кудрявцев17 уровень, Омск
6 сентября, 15:40
Я думаю, создатели курса специально стимулируют обучающихся немного заглядывать вперёд. Чуток погуглив, можно решить задачу гораздо более простым способом, и это, скорее всего, лучше отложится в памяти, потому что, что ты сам это нашёл и воплотил.
Евгений Буш8 уровень, Санкт-Петербург
четверг, 08:56
у if(...) всегда внутри boolean . В чем проблема?
Михаил Паскевич5 уровень, Киев
воскресенье, 16:54
Для каждой повторяющейся процедуры создаешь свой метод, потом собираешь результаты. Метод А для проверки +/-, метод Б для проверки четное/нечетное, метод В считает количество знаков. В мейне все собираешь А + Б + В.
Николай5 уровень, Москва
2 сентября, 18:59
Я последние две задачи решил, запихнув все возможные комбинации чисел a, b и c в условие if с использованием логических && и ||.
Виктор5 уровень, Минск
22 августа, 17:05
В задаче "Положительное число" помощь помогла как в части здоровой критики - не чего заниматься громоздкими переборами ! Так и советом: ВКЛЮЧАЙ СЧЁТЧИК ! Покажи класс !!! И никаких заморочек ...
Учиха Шисуи8 уровень, Новосибирск
22 августа, 16:46
Ни разу, так и не объявил булевскую переменную(
Никита19 уровень, Днепр
16 августа, 22:12
Как-то странно они объяснили, попробую привести пару примеров может, чтобы кто-то не запутался, особенно с ||. Так как это не только ИЛИ. a || b - означает что ЛИБО (a=true И b=true) Либо (a=true ИЛИ b = true). Это означает И и ИЛИ. В таблице это показано, но может кого-то запутать ТОЛЬКО ИЛИ в первом столбце. Так как под это есть другой оператор. a ^ b - означает (a=true ИЛИ b = true) и все (Одновременно оба true выдадут false, только ИЛИ)! a && b - означает (a=true И b=true) и все, ИЛИ не прокатит! a != true a не Истина. Тут ясно. Но есть еще отдельно & и отдельно |. Возможно это будет позже, но кому интересно объясню. Разница в || и | в том что когда (a || b) проверится сначала a=true и если a=true то значение для b даже не будет рассмотрено, так как это уже не нужно. Однако когда | то проверятся в любом случае обе стороны (и a и b) и только после этого произойдет сравнение. Так же и с && и &. В случае с && если a=false то значение b проверять нет смысла, однако при & будут проверятся оба значения а потом java вынесет вердикт. В большинстве случаев используют && и ||. Однако | и & тоже иногда имеют смысл
Sergei Azarov9 уровень, Москва
22 августа, 20:29
^ - это "исключающее или", он же XOR. А || всегда называется просто "ИЛИ", это в общем-то не в Java придумали.
Никита19 уровень, Днепр
22 августа, 21:03
я понимаю, просто мне кажется так было бы понятней тому кто впервые видит это. К примеру для простоты восприятия можно было так объяснить, а где-то позже сказать про ИЛИ и исключающее ИЛИ. Но возможно я не прав
3 сентября, 11:45
Возможно будет понятнее если воспринимать && как умножение, где 1*1=0, 1*0=0, 0*1=0 и 0*0=0; А || как сумма, где 1+0=1, 0+1=1, 0+0=0 а 1+1=1, потому как булевых выражениях не третьей составляющей.
Дмитрий4 уровень, Ярославль
воскресенье, 07:05
Никит, а можешь объяснить на пальцах, что это означает: — Оператор NOT – унарный – его действие распространяется только на выражение справа от него. Он больше похож на знак «минус» перед отрицательным числом, чем на знак умножить У меня в голове не укладывается понятие - больше похож на минус перед минусом..
Дмитрий4 уровень, Ярославль
вчера, 06:29
Да, сам принцип понимаю. Я честно говоря совсем не понял аналогию приведённую в материале, а конкретно: Он больше похож на знак «минус» перед отрицательным числом, чем на знак умножить