В чем разница между!= И =! в Java?
Я искал несколько вопросов OCJP. Я натолкнулся на действительно непонятный синтаксис. Вот он:
class OddStuff {
public static void main(String[] args) {
boolean b = false;
System.out.println((b != b));// False
System.out.println((b =! b));// True
}
}
Почему выход изменяется между !=
и =!
?
Ответы
Ответ 1
Вопрос просто играет с вами с путаным расстоянием.
b != b
- это обычное сравнение !=
(не равно).
С другой стороны:
b =! b
лучше записывается как b = !b
, который анализируется как:
b = (!b)
Таким образом, это два оператора.
- Сначала инвертировать
b
.
- Затем верните его в
b
.
Оператор присваивания возвращает присвоенное значение. Поэтому (b =! b)
имеет значение true - это то, что вы распечатываете.
Ответ 2
b != b
означает ! (b == b)
: противоположность b == b
.
b =! b
на самом деле b = !b
, присваивание. Он переключает значение b
. Назначение оценивает значение выражения, поэтому оно будет оцениваться до !b
(наряду с изменением значения b
).
Ответ 3
b=!b
- задание. Он присваивает b
!b
, и выражение оценивает полученное значение, которое равно true
.
Ответ 4
b =! б
вы выполняете задание, вы говорите, что B должно иметь значение! B.
b!= b
Вы спрашиваете, отличается ли B от b