(!var)vs(var == null)在java / groovy中

时间:2014-01-23 10:23:39

标签: java performance groovy null

java中的建议:

if(!var){

} 

 if(var==null){

}

为什么?

Groovy是一回事吗?

3 个答案:

答案 0 :(得分:3)

在java中,如果varnull

if( !var ) {
    // var is not null
}

!不适用于布尔值。

在Groovy中,它将适用于Groovy Truth。

但是,如果您正在测试null,那么您应该使用显式测试

if( var != null ) {
    // var is not null
}

即使在Groovy中,似乎var是Groovy认为false的任何内容,第一次比较也会通过,即:

assert !0
assert !''
assert ![]
assert !null

当然你也可以使用null safe运算符:

def map = [ person:[ tim:[ login:'tim_yates' ] ] ]

assert map?.person?.tim?.login == 'tim_yates'
assert map?.person?.alice?.login == null

答案 1 :(得分:2)

Java中的第一个仅适用于布尔值

答案 2 :(得分:2)

一元运算符!执行否定操作。例如, !false会产生true

==进行比较操作。

它们彼此完全不同。在java中,只能使用带有boolean值的否定运算符,而比较运算符可用于比较值。

此外,在Java中,如果varBoolean并且为null,那么

if(!var){ // would throw a NullPointerException
}