! Флаг имеет два значения в Java?

boolean flag = false;
if(!flag) System.out.println(!flag); // prints true

интересно, почему !flag рассматривается как false когда это условный параметр передается if statement и в качестве true в другом месте?

5 ответов

Решение

Это не. if (boolean expression) { statement } означает "выполнить statement если boolean expression это правда."Так как flag = false, !flag == true, Всегда.

!flag не меняет значение flag, это просто отрицает это, оценивая это.

поскольку flag = false, !flag идентично !false который true,
Ваш код эквивалентен этому:

if (!false) System.out.println(!false); 

что эквивалентно:

if (true) System.out.println(true); 

!flag где flag является false оценивает true во всех контекстах, включая операторы if.

Ну, вы, вероятно, неправильно интерпретируете оценку условного оператора. if оператор выполняет операторы внутри, если и только если условие оценивается как true,

Сейчас, flag равно false, Это означает, что отрицание flag будет true (!false = true). Вот почему внутри оператора if выполняется утверждение и пишет true (отрицательное значение flag) к выходу вашей консоли.

На человеческом языке:

если флаг не равен true, выведите противоположное значение "flag"

Другие вопросы по тегам