Нет, нет, потому что x &= y
- это сокращение от x = x & y
, а x |= y
- это сокращение x = x | y
.В Java нет операторов &&=
или ||=
, которые будут делать то, что вы хотите.
Операторы &
и |
(наряду с ~
, ^
, <<
, >>
и >>>
) являются побитовыми операторами .Выражение x & y
будет для любого целочисленного типа выполнять побитовую и операцию.Аналогично, |
выполняет побитовое или.Для выполнения побитовой операции каждый бит в числе обрабатывается как логическое значение, где 1
обозначает true
и 0
обозначает false
.Таким образом, 3 & 2 == 2
, поскольку 3
- это 0...011
в двоичном формате, а 2
- это 0...010
.Точно так же 3 | 2 == 3
. Википедия содержит хорошее полное объяснение различных операторов.Теперь, для логического значения, я думаю вы можете обойтись, используя &
и |
в качестве не короткозамкнутых эквивалентов &&
и ||
, ноЯ не могу себе представить, почему ты так хочешь.