b2 = false
присваивает false
переменной b2
, а выражение имеет значение false
. |
на booleans означает «или» (без короткого замыкания), поэтому он оценивает оба операнда, и результат является истинным, если оба операнда истинны.
не побитовый оператор. Если вы используете |
для целых чисел, это побитовый оператор. Если вы используете |
на booleans, это логический оператор.
Изменить:
||
является оператором короткого замыкания. Если вы напишете (a() || b())
и a()
оценивает значение true, то b()
не будет оцениваться, потому что результат или должен быть правдой. Одиночный |
не является короткозамкнутым, поэтому оба операнда всегда оцениваются.
Вы по-прежнему считаете '|' как побитовый оператор, даже для булевых. Что это значит для логического? Логическое значение можно рассматривать как однобитовое значение (тот факт, что JVM использует несколько бит для него - это просто нерелевантная реализация, выполненная для производительности). Если он работает только на одном бите, побитовый оператор - это то же самое, что и логический оператор. –