! Флаг имеет два значения в 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"