!标志在java中有两种含义?

!标志在java中有两种含义?,java,if-statement,not-operator,Java,If Statement,Not Operator,我想知道为什么!当它是传递给if语句的条件参数时,标志被视为false,在其他地方被视为true。!flag其中flag为false在所有上下文中,包括if语句,计算结果均为true。!flag其中flag为false在所有上下文(包括if语句)中的计算结果均为true。并非如此if(boolean expression){statement}表示“如果boolean expression为true,则执行语句”。因为标志=false,!flag==true。总是这样。不是if(boolean

我想知道为什么
!当它是传递给
if语句的条件参数时,标志
被视为
false
,在其他地方被视为
true

!flag
其中
flag
false
在所有上下文中,包括if语句,计算结果均为
true

!flag
其中
flag
false
在所有上下文(包括if语句)中的计算结果均为
true

并非如此
if(boolean expression){statement}
表示“如果
boolean expression
为true,则执行
语句”
。因为
标志=false
!flag==true
。总是这样。

不是
if(boolean expression){statement}
表示“如果
boolean expression
为true,则执行
语句”
。因为
标志=false
!flag==true
。始终。

好吧,您可能误解了条件运算符的求值。
if
运算符执行内部语句,当且仅当条件的计算结果为
true


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

您可能误解了条件运算符的计算。
if
运算符执行内部语句,当且仅当条件的计算结果为
true


现在,
flag
等于
false
。这意味着
标志
的否定将是
true
!false=true
)。这就是为什么会执行if确认中的一条语句,并将
true
标志的否定值
)写入控制台输出。

!flag
不会更改
flag
的值,它只是在计算时将其取反

因为
标志=false
!标志
相同!false
这是
true

您的代码与此等效:

boolean flag = false;
if(!flag) System.out.println(!flag); // prints true
这相当于:

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

!flag
不会更改
flag
的值,它只是在计算时将其取反

因为
标志=false
!标志
相同!false
这是
true

您的代码与此等效:

boolean flag = false;
if(!flag) System.out.println(!flag); // prints true
这相当于:

if (!false) System.out.println(!false); 
用人类语言:

如果flag不为true,则用人类语言打印“flag”的相反值:


如果flag不正确,请打印“flag”的相反值。

!无论在何处,flag都应评估为true。我错过了什么?!无论在何处,flag都应评估为true。我缺少什么?
如果布尔表达式为真,则执行该语句
这是我需要知道的。谢谢@dlev:)
如果布尔表达式为真,请执行该语句
这是我需要知道的。谢谢@dlev:)