!flag在java中有两种含义?
boolean flag = false;
if(!flag) System.out.println(!flag); // prints true
我想知道为什么 !flag
当它是传递给 if 语句
的条件参数并在其他地方被视为 true
时被视为 false
?
boolean flag = false;
if(!flag) System.out.println(!flag); // prints true
I wonder why !flag
being considered as false
when it's a conditional parameter passed to if statement
and as true
elsewhere?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
它不是。
if (boolean expression) {statement }
表示“如果布尔表达式
为真,则执行语句
”。由于flag = false
,!flag == true
。总是。It's not.
if (boolean expression) { statement }
means "execute thestatement
ifboolean expression
is true." Sinceflag = false
,!flag == true
. Always.!flag
(其中flag
为false
)在所有上下文(包括 if 语句)中计算结果为true
。!flag
whereflag
isfalse
evaluates totrue
in all contexts, including if statements.!flag
不会改变flag
的值,它只是在求值时否定它。由于
flag = false
,!flag
与!false
相同,后者是true
。您的代码相当于:
相当于:
!flag
does not change the value offlag
, it merely negates it when evaluating it.Since
flag = false
,!flag
is identical to!false
which istrue
.Your code is equivalent to this:
which is equivalent to:
好吧,您可能误解了条件运算符的评估。当且仅当条件计算结果为 true 时,
if
运算符才会执行内部语句。现在,
flag
等于false
。这意味着flag
的否定将为true
(!false = true
)。这就是执行 if 条件中的 tne 语句并将true
(flag
的负值)写入控制台输出的原因。Well, you are probably misinterpreting the evaluation of conditional operator. The
if
operator performs the statements inside, if and only if the condition is evaluated astrue
.Now,
flag
is equal tofalse
. This means that negation offlag
will betrue
(!false = true
). This is why tne statement inside the if confition is performed and writestrue
(the negated value offlag
) to your console output.用人类语言:
如果 flag 不为 true,则打印出“flag”的相反值
in human language:
if flag is not true, print out the opposite value of "flag"