Тип данных boolean и логические операторы — введение в Java 005 #

Boolean в Java — это логический тип данных. Переменная типа boolean может принимать всего два значения — это правда или ложь — true & false. Эти два значения обозначаются в других языках и часто выдаются на экран как 1 и 0, но всё же не равны этим значениям: например, выражение boolean b = 0; приведёт к ошибке при компиляции программы. Но мы можем сравнить переменные или выполнить логическую операцию с типом данных boolean:
Говоря о булевых или логических типах данных, нам придётся освежить свои воспоминания о булевой алгебре и возможных логических операциях.
Таблица истинности #
| a | b | a & b | a I b | a ^ b | ! a |
|---|---|---|---|---|---|
| false | false | false | false | false | true |
| false | true | false | true | true | true |
| true | false | false | true | true | false |
| true | true | true | true | false | false |
Давайте представим себе пример из жизни: мы ищем на сайте все статьи, которые мы опубликовали и комментировали. Должны быть два совпадения — это вариант a & b. Или мы ищем все статьи, в которых есть упоминание слов “алгебра” или “математика” — это a | b. А отыскать все статьи, которые написаны не нами, можно, применив логический оператор !a. Стать исключительно космонавтом или медиком — это a ^ b
Это так называемые булевы или логические операции. В интернете много материала по ключевым словам: таблица истинности, булева алгебра, теория множеств, конъюнкция, дизъюнкция.
С помощью таблицы с результатами логических операций можно перепроверить работу Java:
Надо понимать, что значение вашего чекбокса (галочки) на сайте Facebook при регистрации — “с правилами ознакомлен и согласен” — и есть значение булевой переменной в программе.
Логические операторы, которые поддерживаются Java #
| Логический операторы | Значение |
|---|---|
| == | Проверка на соответствие (допустим, что a равен b) |
| != | Не равно (если a не равно b, то) |
| ! | Отрицание, логическое не |
| & | Логическое И, and |
| | | Логическое или, or |
| ^ | Исключительное или, XOR |
| && | Укороченный & |
| || | Укороченный или |
Амперсанд — это название знака &.
Карет (англ. caret) — это название знака ^.
Пайп (pipeline), Вертикальная черта — это название знака |.
Мы ещё раз рассмотрим данные операторы позже. Пока мы должны понимать, что с арифметическими операторами всё немного сложнее, чем хотелось бы.
Булева алгебра #
Булева алгебра, ударение на первый слог. БУлева.
Принципиально основы булевой алгебры не должны были давать в школе. Программисты учат её в институте.
Давайте я попробую на пальцах рассказать основы и то, что нам понадобится на минимальном уровне.
Дизъюнкция #
Когда мама ИЛИ папа дают мне деньги на карманные расходы, то я бегу и покупаю себе мороженное.
Знакомая ситуация, деньги можно получить в трёх случах из четырёх. В одном случае же деньги может дать и мама, и папа, тогда и друга можно угостить мороженным.
Дизъюнкция — логическое сложение, логическое ИЛИ, включающее или, просто “или”(англ. OR; нем. ODER) В Java операторы «|» и «||»
Пример в технике; дублирование выключателя или кнопки, дверной звонок и звонок у калитки вызывают одну и туже реакцию — включается мелодия звонка.
В учебниках можно встретить обозначение “больше либо равно единице” — =>1.
Конъюнкция #
Конъюнкция — логическое “И”, логическое умножение, просто “И”, “AND”, «&».
В Java оператор «&» и «&&».
Если светит солнце “И” у меня выходной, то я иду купаться на озеро.
Пример из жизни. Ядерный чемоданчик могут активировать только два офицера одновременно. По отдельности чемодан остаётся неактивным.
Антиваленц #
“XOR”, эксклюзивное или, “EOR”, “EXOR”. В Java оператор «^».
Только на горных лыжах в Австрии или на лошадях у бабушки в деревне я забываю про свою работу.
Или ты садишься за математику или я расскажу всё отцу.
ИЛИ — ИЛИ. Исключительное или.
Лампочка в больнице может работать от городского электричества или от дизельного генератора в подвале. Но не от двух источников одновременно.
В учебниках можно встретить обозначение “равно единице” — =1.
Отрицание #
Negation. NOT. В Java оператор «!».
Давайте представим огромный станок по продольной распилке леса. В цеху есть две кнопки. Зелёная и красная. При включении зелёной пила должна работать. При нажатии на красную пила должна остановится.
Дополнительные материалы #
Домашнее задание #
- Что выдаст программа, если запросить значения a, b, c, d, e, f?
- Посчитайте сначала в уме и проговорите вслух, что делает каждая строчка.
- Напишите программу и проверьте свои результаты.
- Сравните строчку вывода со своей:
- Повторение String: Найдите метод из официальной библиотеки и покажите его работу. По возможности используйте printf.
- Задача. Не для решения в Java, а для попытки понимания логических операций в уме.
Петя, Вася и Маша остались дома одни. Кто-то из них ел варенье. На вопрос мамы, кто это сделал, они сказали:- Петя: “Я не ел. Маша тоже не ела.”
- Вася: “Маша действительно не ела. Это сделал Петя”
- Маша: “Вася врет. Это он съел.”
Выясните, кто ел варенье, если известно, что двое из них оба раза сказали правду, а третий один раз соврал, а один раз сказал правду.
Что такое boolean в java

Java provides a wrapper class Boolean in java.lang package. The Boolean class wraps a value of the primitive type boolean in an object. An object of type Boolean contains a single field, whose type is boolean. In addition, this class provides useful methods like to convert a boolean to a String and a String to a boolean, while dealing with a boolean variable.
Creating a Boolean object
Boolean class provides two constructors for creating Boolean object.
Логический тип boolean

Как мы уже убедились, в Java есть очень полезный оператор — if-else . Он выполняет один блок команд, если условие в скобках истинно, и второй блок команд, если условие ложно.
Чтобы было удобно работать с выражениями, которые могут быть истинными или ложными, в Java добавили специальный тип — boolean . Его главная особенность заключается в том, что переменные этого типа могут принимать всего два значения: true ( истина ) и false ( ложь ).
Никакие другие значения присвоить переменным типа boolean невозможно. Компилятор не позволит.
И зачем же нужен такой примитивный тип?
Все дело в том, что в него можно сохранять значения логических выражений. Пример:
Логическая переменная isIce содержит значение true ( истина )
2. Использование булевых переменных
От булевых переменных было бы мало толку, если бы в них можно было только сохранять результаты выражений. Все дело в том, что их можно еще и использовать. Где? Да везде, где можно написать логическое выражение.
Например, логическую переменную можно подставить в условие if -а:
Код Эквивалент В данном примере выгоды от такой замены немного, но чем больше программа, тем сложнее у нее условия. В ближайшее время вы в этом убедитесь.
Java Boolean
Java boolean primitive data type and boolean variables
Boolean expressions in Java
comparison operators Java operator Operation example The result of operation Less < a < b true if a is less than b otherwise false Greater > a > b true if a is greater than b , otherwise false Less than or equal <= a <= b true if a is less than b or they are equal, otherwise false Greater or equal >= a >= b true, if a greater or equal to b , otherwise false Equal == a == b true, if a is equal to b , otherwise false Not equal != a != b true, if a is not equal to b , otherwise false Where boolean values are used
Java boolean operators. Building Boolean Expressions with Boolean Operators
Logical negation, it is also NOT or inversion. In Java, denoted by the symbol ! before expression.
Logical and, it is also AND or conjunction. Denoted by the symbol & between the two expressions to which it is applied.
Logical or in Java, it is also OR, it is also disjunction. In Java, denoted by the symbol | between two expressions.
Exclusive or, XOR, strict disjunction. In Java, it is denoted by the symbol ^ between two expressions.
In Java, logical operators include the conditional or, denoted as || , as well as the conditional and, && .