boolean flag = false;
if(!flag) System.out.println(!flag); // prints true
我想知道为什么!flag
将其视为false
传递给其他地方的条件参数if statement
和true
其他地方?
boolean flag = false;
if(!flag) System.out.println(!flag); // prints true
我想知道为什么!flag
将其视为false
传递给其他地方的条件参数if statement
和true
其他地方?
它不是。if (boolean expression) { statement }
意思是“执行statement
如果boolean expression
是真的”。由于flag = false
, !flag == true
. 总是。
!flag
where flag
is在所有上下文中false
求值true
,包括 if 语句。
好吧,您可能误解了条件运算符的评估。当if
且仅当条件评估为 时,运算符执行内部语句true
。
现在,flag
等于false
。这意味着将的否定flag
是true
(!false = true
)。这就是为什么执行 if confition 中的 tne 语句并将true
(的否定值flag
)写入控制台输出的原因。
!flag
不会改变的值flag
,它只是在评估它时否定它。
因为flag = false
,与which is!flag
相同。
您的代码等效于:!false
true
if (!false) System.out.println(!false);
这相当于:
if (true) System.out.println(true);
人类语言:
如果 flag 不为真,则打印出“flag”的相反值