Java | Урок 12. Логическое И, ИЛИ, НЕТ.
- Главная >
- Видео канал >
- Java | Урок 12. Логическое И, ИЛИ, НЕТ.
УЛУЧШАЙТЕ НАВЫКИ С ПОМОЩЬЮ ПРАКТИКУМА
СЛЕДУЮЩЕЕВ этом уроке, основной темой будут логические операторы, а именно — «И (&&), ИЛИ(||), НЕТ (!)». Пример составления простой условной конструкции с применением логических операторов.
Регистрация через
✖или E-mail
Нажав на кнопку «Зарегистрироваться»,
Вы соглашаетесь с условиями использования.
Уже есть аккаунт
Получите курс бесплатно
✖
Вы выбрали курс для изучения
«»
Чтобы получить доступ к курсу, зарегистрируйтесь на сайте.
РЕГИСТРАЦИЯ
Спасибо за регистрацию
✖
Перейдите на почту и подтвердите Ваш аккаунт,
чтобы получить доступ ко всем
бесплатным урокам и вебинарам на сайте ITVDN. com
ПОДТВЕРДИТЬ ПОЧТУ НАЧАТЬ ОБУЧЕНИЕ
Спасибо за регистрацию
✖
Ваш аккаунт успешно подтвержден.
Начать обучение вы можете через Личный кабинет
пользователя или непосредственно на странице курса.
НАЧАТЬ ОБУЧЕНИЕ
Подтверждение аккаунта
На Ваш номер телефона было отправлено смс с кодом активации аккаунта. Пожалуйста, введите код в поле ввода.
Отправить код еще раз
Изменить номер телефона
Ошибка
✖Вопросы 10, 11, 12, 13 (логические операции)
18 мая 2018 (14:52:05) 1360
«Какие логические операции и операторы вы знаете?»«В чем разница краткой и полной схемы записи логических операторов?»
«Что такое тернарный оператор выбора?»
1. Логические операторы работают только с операндами типа boolean. = XOR с присваиванием
== Равно
!= Не равно
?: Тернарный (троичный) условный оператор
скрытый текст2. Результаты выполнения логических операторов (AND, OR, XOR, NOT).
AND возвращает true, если оба операнда равны true. OR, если хотя бы один. XOR если только
2.1. Таблица истинности — это таблица, описывающая логическую функцию (значения операндов и возвращаемые значения).
http://developer.alexanderklimov.ru/android/java/logic_operators.php
3. Кроме стандартных операторов AND (&) и OR (|) существуют сокращённые операторы && и ||. Если взглянуть на таблицу истинности, видно, что результат выполнения оператора OR всегда равен true, когда значение левого операнда равно true. Аналогично, результат выполнения оператора AND всегда равен false, когда значение первого операнда равно false.
3.1. Это становится удобным в случаях, когда значение правого операнда зависит от значения левого. Например, if (mouse != 0 && weight / mouse в отличие от версии со стандартным AND не приведет к ошибке, если значение mouse равняется 0.
3.2. Сокращённые варианты операторов AND и OR принято использовать в ситуациях, когда требуются именно операторы булевой логики. А их односимвольные родственники обычно используются для побитовых операций.
4. В языке Java есть также специальный тернарный условный оператор, которым можно заменить определённые типы операторов if-then-else — это оператор ?:
4.1. Тернарный оператор использует три операнда. Выражение записывается в следующей форме:
[логическоеУсловие] ? [выражение1] : [ выражение2]
Если логическоеУсловие равно true, то вычисляется выражение1, и его результат становится результатом выполнения всего оператора. Если же логическоеУсловие равно false, вычисляется выражение2, и его значение становится результатом работы оператора. Оба операнда
4.2. Пример использования оператора выбора для вычисления значения по модулю:
absval = val
Аналогичный код с использованием if:
if(val
else absval = val;
- #типы данных, переменные, операторы, циклы, массивы
- #Java
- #программирование
- #работа
Документация JDK 20 — Главная
- Главная
- Java SE
- 20
Обзор
- Прочтите меня
- Примечания к выпуску
- Что нового
- Руководство по миграции
- Загрузить JDK
- Руководство по установке
- Формат строки версии
Инструменты
- Технические характеристики инструментов JDK
Руководство пользователя JShell- Руководство по JavaDoc
- Руководство пользователя средства упаковки
Язык и библиотеки
- Обновления языка
- HTTP-клиент JDK
- Учебники по Java
- Модульный JDK
- Руководство программиста API бортового регистратора
- Руководство по интернационализации
Технические характеристики
- Документация API
- Язык и ВМ
- Имена стандартных алгоритмов безопасности Java
- банок
- Собственный интерфейс Java (JNI)
- Инструментальный интерфейс JVM (JVM TI)
- Сериализация
- Проводной протокол отладки Java (JDWP)
- Спецификация комментариев к документации для стандартного доклета
- Прочие характеристики
Безопасность
- Руководство по безопасному кодированию
- Руководство по безопасности
Виртуальная машина HotSpot
- Руководство по виртуальной машине Java
- Настройка сборки мусора
Управление и устранение неполадок
- Руководство по устранению неполадок
- Руководство по мониторингу и управлению
- Руководство по JMX
Client Technologies
- Руководство по специальным возможностям Java
Избегайте нулевых логических значений в Java.
Вы предпочитаете коробочные примитивы? | Марсело Вальс | Переменные StartupJava boolean (примитивные) допускают только два возможных значения: true или false, последнее по умолчанию.
Мы используем логические значения для представления значений, которые могут представлять только истинное или ложное утверждение, например:
- isEmpty
- hasSomething
- isAlive
- canContinue
- isBlank
- etc
Допустим, у вас есть список дел, которые нужно сделать, и вы хотите знать, пуст ли этот список, чтобы наконец вернуться домой . Итак, список пуст? Если это (правда), то вы можете идти домой, если нет (ложь), то вы должны продолжать работать… действительно ли это имеет смысл для ответа null ?
- Субъект A: «Эй, список пуст?»
- Субъект Б: «Понятия не имею»
- Субъект А: «Идти мне домой или остаться здесь?»
Какой ответ? Должен ли субъект А продолжать работать? Должен ли он/она ждать новой задачи?…
Поскольку Java является объектно-ориентированным языком программирования, он также имеет все свои примитивные типы в виде классов.
Integer — это обертка для примитива int, Double — это обертка для примитива double… здесь вы понимаете суть. Ну, Boolean — это оболочка для примитивного логического значения. Это вводит третий возможный статус для логической переменной: поскольку объекты могут принимать значения NULL, логические значения также могут принимать значения NULL.
Итак… логическое значение может быть истинным, ложным… или нулевым .
Нулевое логическое значение означает, что переменной не назначена ссылка, поэтому она не является ни истинной, ни ложной, это «ничего».
Что мы можем сделать с нулевым логическим значением?
Вот пример, который приходит мне на ум:
Предположим, вы работаете с погодной системой и используете сторонний API. Одно из полей в ответе JSON является логическим, isTornadoAlert и может принимать значения true, false или null.
Во многих странах и городах есть несколько метеостанций, которые не сообщают о торнадо, потому что у них нет необходимой инфраструктуры, или из-за типичной погоды, или чего-то еще… но дело в том, что они не отправляют это isTornadoAlert , поэтому вы не получите значение true или false, вместо этого вы получите null .
Ну, ваша погодная система предоставляет эту информацию веб-сайту, а затем этот веб-сайт показывает информацию о предупреждении о торнадо:
- Если isTornadoAlert имеет значение true, отображается правильное оповещение.
- Если isTornadoAlert ложно, то он может с гордостью сказать, что все будет ок.
- Если isTornadoAlert имеет значение null, информация может быть просто опущена. У него нет реальной информации, и говорить, что никакого торнадо не будет, было бы просто неправдой. Просто не знает.
Вы можете просто сказать, что ноль означает ложь, но это будет не совсем так. По крайней мере, нет в этой ситуации.
Я считаю, что возможность иметь нулевые значения для булевых переменных является своего рода неприятным побочным эффектом, и вот почему:
Булева алгебра
в котором значения переменных являются значениями истинности true и false, обычно обозначаемыми 1 и 0 соответственно.
В булевой алгебре нет третьего возможного значения для переменных. Так почему же в логических переменных должно быть нулевое возможное значение?
Трехзначная логика
Существует трехзначная логика, где переменная может быть истинной, ложной или неопределенной. Но такая логика не поддерживается языком Java. В трехзначной логике есть несколько возможных таблиц истинности, и ни одна из них на самом деле не работает с нулевыми значениями в Java.
Если вы попытаетесь запустить этот код, вы увидите, о чем я говорю.
Я настоятельно рекомендую не использовать логические значения, а вместо этого использовать примитивный тип. Это всегда лучше: нет исключений NullPointerException, нет сложности автоупаковки/распаковки, нет создания объектов, нет проблем с идентификацией.
Вместо использования класса-оболочки я предпочитаю использовать перечисляемые значения. Возьмем пример isTornadoAlert .
Мы можем преобразовать логическое поле isTornadoAlert в перечисляемое tornadoAlertStatus со следующими значениями:
- TORNADO_INCOMING
- NO_TORNADO_DETECTED
- UNKNOWN_STATUS
Значение UNKNOWN_STATUS говорит нам о чуть больше значение null и наличие перечисления дает нам возможность добавлять дополнительные значения в ответ, не нарушая работу всего API.