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. 总是。
!flagwhere flagis在所有上下文中false求值true,包括 if 语句。
好吧,您可能误解了条件运算符的评估。当if且仅当条件评估为 时,运算符执行内部语句true。
现在,flag等于false。这意味着将的否定flag是true(!false = true)。这就是为什么执行 if confition 中的 tne 语句并将true(的否定值flag)写入控制台输出的原因。
!flag不会改变的值flag,它只是在评估它时否定它。
因为flag = false,与which is!flag相同。
您的代码等效于:!falsetrue
if (!false) System.out.println(!false);
这相当于:
if (true) System.out.println(true);
人类语言:
如果 flag 不为真,则打印出“flag”的相反值