В чем разница между!= И =! в 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