Разное

Логическое или java: Логические операторы Java ( исключающее ИЛИ / логическое ИЛИ)

= XOR с присваиванием
== Равно
!= Не равно
?: Тернарный (троичный) условный оператор

скрытый текст2. Результаты выполнения логических операторов (AND, OR, XOR, NOT).
AND возвращает true, если оба операнда равны true. OR, если хотя бы один. XOR если только один. NOT возвращает true, если операнд false; и наоборот.

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, и его значение становится результатом работы оператора. Оба операнда выражение1 и выражение2 должны возвращать значение одинакового (или совместимого) типа.

4.2. Пример использования оператора выбора для вычисления значения по модулю:
absval = val Аналогичный код с использованием if:
if(val else absval = val;

  • #типы данных, переменные, операторы, циклы, массивы
  • #Java
  • #программирование
  • #работа

Поделиться в соцсетях

Java.lang логический класс — CoderLessons.com

Класс java.lang.Boolean переносит значение логического типа примитива в объект. Объект типа Boolean содержит единственное поле, тип которого является логическим.

Декларация класса

Ниже приводится объявление для класса java.lang.Boolean

public final class Boolean
   extends Object
      implements Serializable, Comparable<Boolean>

поле

Ниже приведены поля для класса java. lang.Boolean.

  • static Boolean FALSE – это логический объект, соответствующий примитиву false.

  • static Boolean TRUE – это логический объект, соответствующий примитиву true.

  • static Class <Boolean> TYPE – это объект Class, представляющий логический тип примитива.

static Boolean FALSE – это логический объект, соответствующий примитиву false.

static Boolean TRUE – это логический объект, соответствующий примитиву true.

static Class <Boolean> TYPE

– это объект Class, представляющий логический тип примитива.

Конструкторы классов

Sr.No. Конструктор и описание
1

Логическое (булево значение)

Это выделяет логический объект, представляющий аргумент значения.

2

Boolean (String s)

Это распределяет логический объект, представляющий значение true, если строковый аргумент не равен нулю и равен (без учета регистра) строке «true».

Логическое (булево значение)

Это выделяет логический объект, представляющий аргумент значения.

Boolean (String s)

Это распределяет логический объект, представляющий значение true, если строковый аргумент не равен нулю и равен (без учета регистра) строке «true».

Методы класса

Sr.No. Метод и описание
1 boolean booleanValue ()

Этот метод возвращает значение этого логического объекта как логический примитив.

2 int compareTo (логическое значение b)

Этот метод сравнивает этот логический экземпляр с другим.

3 логическое равенство (Object obj)

Этот метод возвращает true тогда и только тогда, когда аргумент не равен нулю и является логическим объектом, который представляет то же логическое значение, что и этот объект.

4 статическое логическое значение getBoolean (имя строки)

Этот метод возвращает истину тогда и только тогда, когда системное свойство, названное аргументом, существует и равно строке «истина».

5
int hashCode ()

Этот метод возвращает хеш-код для этого логического объекта.

6 статический логический parseBoolean (String s)

Этот метод анализирует строковый аргумент как логическое значение.

7 Строка toString ()

Этот метод возвращает объект String, представляющий это логическое значение.

8 статическая строка toString (логическое значение b)

Этот метод возвращает объект String, представляющий указанное логическое значение.

9 статическое логическое значениеOf (логическое значение b)

Этот метод возвращает логический экземпляр, представляющий указанное логическое значение.

10 статическое логическое значение valueOf (String s)

Этот метод возвращает логическое значение со значением, представленным указанной строкой.

Этот метод возвращает значение этого логического объекта как логический примитив.

Этот метод сравнивает этот логический экземпляр с другим.

Этот метод возвращает true тогда и только тогда, когда аргумент не равен нулю и является логическим объектом, который представляет то же логическое значение, что и этот объект.

Этот метод возвращает истину тогда и только тогда, когда системное свойство, названное аргументом, существует и равно строке «истина».

Этот метод возвращает хеш-код для этого логического объекта.

Этот метод анализирует строковый аргумент как логическое значение.

Этот метод возвращает объект String, представляющий это логическое значение.

Этот метод возвращает объект String, представляющий указанное логическое значение.

Этот метод возвращает логический экземпляр, представляющий указанное логическое значение.

Этот метод возвращает логическое значение со значением, представленным указанной строкой.

Методы унаследованы

Этот класс наследует методы от следующих классов –

Избегайте нулевых логических значений в Java.

Вы предпочитаете коробочные примитивы? | Марсело Вальс | Стартап

Предпочитаете коробочные примитивы?

Фото Кристофера Билла на Unsplash

Эти четыре пункта очень хорошо описывают идею статьи:

  • Предпочитайте примитивные булевы булевы булевы-оболочки. Это всегда лучший выбор, поскольку вы избегаете NPE, сложности автоупаковки и создания ненужных объектов.
  • Если вы думаете об использовании логического объекта, потому что вам нужно нулевое состояние, используйте вместо этого Enum, это даст вам гораздо больше информации, чем нулевое значение.
  • ИМХО Булевы обертки — всего лишь плохой побочный эффект объектно-ориентированного подхода Java. Они есть, но это не значит, что мы должны их использовать 😉
  • Есть два основных особых случая, когда вы должны использовать логические оболочки:
    — Для использования универсальных типов (Collections, Maps, Stream, Predicate и т.д. …). Они не допускают примитивных значений, но вы должны постараться гарантировать отсутствие нулевых значений.
    — Чтобы сопоставить сторонний API, если у вас нет альтернативы. Задокументируйте значение нулевого значения в этом поле и, когда это возможно, преобразуйте это логическое значение в Enum.

Java boolean переменные (примитивные) допускают только два возможных значения: true или false, последнее по умолчанию.

Мы используем логические значения для представления значений, которые могут представлять только истинное или ложное утверждение, например:

  • Isempty
  • Hassomething
  • Isalive
  • Cancontinue
  • Isblank
  • и т. Д.

список дел, которые нужно сделать, и вы хотите знать, пуст ли этот список, чтобы вы могли, наконец, вернуться домой. Итак, список пуст? Если это (правда), то вы можете идти домой, если нет (ложь), то вы должны продолжать работать… действительно ли это имеет смысл для ноль ответ?

  • Субъект 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 .

We could transform the isTornadoAlert Boolean field to an enumerated tornadoAlertStatus with these values:

  • TORNADO_INCOMING
  • NO_TORNADO_DETECTED
  • UNKNOWN_STATUS

The UNKNOWN_STATUS value tells us a чуть больше значение null и наличие перечисления дает нам возможность добавлять дополнительные значения в ответ, не нарушая работу всего API.

  • Универсальные типы:
    Если вам необходимо использовать универсальные типы, такие как коллекции, потоки, карты, предикаты, функции, потребители, поставщики или ваши собственные универсальные типы, вы не можете использовать примитивные значения. В этой ситуации у вас нет другой альтернативы, кроме как использовать упакованный примитив Boolean. Однако вы должны быть осторожны, чтобы не иметь нулевого значения.
  • Сторонние API:
    Может случиться так, что некоторые сторонние API ответят булевой оболочкой. Если допустимо нулевое значение, я рекомендую вам задокументировать его значение и, если возможно, преобразовать это логическое значение в более репрезентативное перечисление.

Спасибо, что прочитали эту статью!

Каков в Java логический «порядок операций»?

Приоритет логического оператора оценки логики Java

Вопрос задан 14.04.19

Возьмем простой пример объекта `Кошка`. Я хочу быть уверенным, что «ненулевой» `cat` либо оранжевый, либо серый. if(cat != null && cat.getColor() == «оранжевый» || cat.getColor() == «серый») { //делаем что-то } Я считаю, что сначала идет И, затем ИЛИ. Я немного нечеткий, поэтому вот мои вопросы: 1. Может ли кто-нибудь объяснить мне это заявление, чтобы я был уверен, что понимаю, что происходит? 2. Кроме того, что произойдет, если я добавлю круглые скобки; это меняет порядок действий? 3. Будет ли мой порядок операций меняться от языка к языку?

Подписаться І 2

Подробнее

Отчет

1 ответ эксперта

Лучший Новейшие Самый старый

Автор: Лучшие новыеСамые старые

Дэвид С. ответил 16.04.19

Репетитор

5,0 (829)

Генеральный директор/ведущий программист/преподаватель Java с опытом работы более 8 лет

Об этом репетиторе ›

Об этом репетиторе ›

Вы совершенно правы! И (&&) действительно стоит первым, за ним следует ИЛИ (||).

Пошаговая инструкция:

Сначала вычисляется cat != null && cat.getColor() == «orange». (Хотя следует отметить, что для сравнения строк, а также любого типа данных объекта вы должны использовать .equals() вместо ==. Таким образом, это будет cat.getColor().equals(«orange») и cat. getColor().equals(«grey») вместо этого 😊)

Затем оператор ИЛИ оценивается по сравнению с результатом предыдущего оператора И.

Однако это конкретное логическое выражение не будет работать должным образом. Это потому, что вы проверяете, не является ли кошка нулевой и является ли она оранжевой, ИЛИ является ли кошка серой. Невозможно выйти из оператора if, если кот действительно нулевой, прежде чем проверять, является ли он серым. Это может вызвать исключение NullPointerException.

Чтобы исправить это, вам нужно заключить в круглые скобки последние две трети оператора, чтобы он сначала проверял, не является ли кошка нулевым, а ЗАТЕМ проверял, является ли он оранжевым или серым.

Например, это будет выглядеть так:

if(cat != null && (cat.getColor().equals(«оранжевый» ) || cat.getColor().equals(«серый»)))

{

//stuff

}

Если вы где-нибудь добавили круглые скобки, они будут оцениваться перед И и ИЛИ. Для Java, как и для большинства других языков, порядок операций для логического оператора следующий:

  1. ! НЕ
  2. () Скобки
  3. && И
  4. || ИЛИ

Надеюсь, это поможет!

Голосовать за 0 Понизить

Подробнее

Отчет

Все еще ищете помощь? Получите правильный ответ, быстро.

Задайте вопрос бесплатно

Получите бесплатный ответ на быстрый вопрос.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *