Java中的感叹号是什么意思?

The*_*Cat 2 java

我想确认!=控制语句中布尔表达式之前的含义是否相反:

例如:

if (!networkConnected()) 
Run Code Online (Sandbox Code Playgroud)

这是否意味着"如果网络没有连接"?

Jea*_*evy 15

是的,它确实意味着逻辑相反.它甚至可以与equals运算符一起使用.

假设你的方法返回一个基本的bool类型

// means the Network is NOT connected
if (!NetworkConnected()) 
Run Code Online (Sandbox Code Playgroud)

这相当于

if (NetworkConnected() != true) 
Run Code Online (Sandbox Code Playgroud)

所以逻辑意味着

if (NetworkConnected() == false) 
Run Code Online (Sandbox Code Playgroud)

现在假设你的方法返回一个布尔值(实际上是一个真实的对象),这意味着

// means the Network is NOT connected
if (! Boolean.TRUE.equals(NetworkConnected());
Run Code Online (Sandbox Code Playgroud)

要么

if (Boolean.FALSE.equals(NetworkConnected());
Run Code Online (Sandbox Code Playgroud)


Ala*_*ter 11

是的,这是布尔否定

所以

true == true
!true == false
!!true == true
!!!true == false
Run Code Online (Sandbox Code Playgroud)

同样是假的

!false == true
Run Code Online (Sandbox Code Playgroud)

这个一元运算符的实际名称是Logical Complement Operator反转布尔值的值