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

我想知道为什么!flag将其视为false传递给其他地方的条件参数if statementtrue其他地方?

4

5 回答 5

8

它不是。if (boolean expression) { statement }意思是“执行statement如果boolean expression是真的”。由于flag = false, !flag == true. 总是。

于 2011-07-12T01:16:54.160 回答
2

!flagwhere flagis在所有上下文中false求值true,包括 if 语句。

于 2011-07-12T01:16:44.477 回答
2

好吧,您可能误解了条件运算符的评估。当if且仅当条件评估为 时,运算符执行内部语句true

现在,flag等于false。这意味着将的否定flagtrue!false = true)。这就是为什么执行 if confition 中的 tne 语句并将true(的否定值flag)写入控制台输出的原因。

于 2011-07-12T01:19:33.413 回答
2

!flag不会改变的值flag,它只是在评估它时否定它。

因为flag = false,与which is!flag相同。 您的代码等效于:!falsetrue

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

这相当于:

if (true) System.out.println(true); 
于 2011-07-12T01:24:36.143 回答
0

人类语言:

如果 flag 不为真,则打印出“flag”的相反值

于 2011-07-12T02:54:09.400 回答