Java аргументы или что то вроде этого

163
07 апреля 2019, 15:00

В интернете нашел такие "аргументы" как: ||, &&, &, |.

Объяснений к ним не было, но я так понял, что & это "и", а | это "или", а что тогда делают || и && я так и не понял.

Answer 1

Простым языком это объясняется так: если сокращённый вариант && проверяет первое условие и оно не верно, то второе условие не проверяется, так как общий результат уже точно будет false; аналогично если || проверяет первое условие и оно верно, то второе условие не проверяется, так как общий результат уже точно будет true. (& Логическое AND (И); && Сокращённое AND; | Логическое OR (ИЛИ); || Сокращённое OR).

Answer 2

& | ~ >> << >>> ^ - побитовые операторы и, или, не, правый сдвиг, левый сдвиг, правый сдвиг без заполнения, исключающее и.
&& || ! - логические операторы и, или, не.

Побитовые операторы выполняют операции с битами;
Например при применении оператора ~ к числу 11001101 (205) все биты инвертируются, и получится число 00110010 (-206).

Логические операторы выполняют логические операции с true или false;
Например возьмём такую строку кода: System.out.print(!("".isEmpty())). Здесь, метод isEmpty вернет true, но при помощи оператора ! результат инвертируется и соответственно в консоли появится false.

Также замечу что логические операторы могут быть заменены побитовыми, но не наоборот.

Answer 3

1-символные операторы (& и |) - побитовые, они применяются отдельно к каждой паре битов на одинаковой позиции:

0b101 & 0b110 есть 0b100, и 0b101 | 0b110 есть 0b111.

или

       101                         101
    &  110                      |  110
    ------                      ------
       100                         111

по таблицaм

  & | 0 | 1 |                  | | 0 | 1 |
  --+---+---+                  --+---+---+
  0 | 0 | 0 |                  0 | 0 | 1 |
  --+---+---+                  --+---+---+
  1 | 0 | 1 |                  1 | 1 | 1 |

2-символные операторы (&& и ||) - это то, о чём вы говорите, логические операторы:

(2 * 2 == 4) && (1 + 1 == 2) есть true
(2 * 2 == 7) && (1 + 1 == 2) есть false
(2 * 2 == 7) || (1 + 1 == 2) есть true
(2 * 2 == 7) || (1 + 1 == 9) есть false

по подобным таблицам (где вместо 0 - false, вместо 1 - true, вместо & - &&, и вместо | - ||):

  &&  | false | true  |           ||  | false | true |
------+-------+-------+         ------+-------+------+
false | false | false |         false | false | true |
------+-------+-------+         ------+-------+------+
true  | false | true  |         true  | true  | true |
READ ALSO
Как правильно прописывать стили?

Как правильно прописывать стили?

Как правильно прописывать стили?

190
Обработка ошибки сети

Обработка ошибки сети

Здравсвуйте! Появилась задача при запросах к API при каких либо "Network error" выводить соответствующее сообщениеВот только Safari (мобильный) например...

223
This в стрелочной функции axios

This в стрелочной функции axios

Пытаюсь настроить глобально axios во vuejs и вывод сообщений при ошибке

128
Axios interceptors и вывод сообщения об асинхронной загрузке

Axios interceptors и вывод сообщения об асинхронной загрузке

Использую vuejs и axios для отправки запросов к API

189