-2

请帮我解决这些 java 语法问题。

我知道 obj.equals(null) 是错误的,那么编写表达式的正确方法是什么

 if(!obj.equals(null)){
 some code    
}

我对选项1感到困惑

if(!(obj == null)){
some code
}

和另一个选项2

if(obj != null){
some code
}

还有一个,像这样的表达

    if(obj.equals(null) || obj2.equals(obj3))

如果我写的话我是对的吗

if(obj == null || obj2.equals(obj3)) 

还是应该有所不同?

4

4 回答 4

1

选项 1 和 2 在逻辑上是等价的。我更喜欢选项 2,它更简洁。

if(obj == null || obj2.equals(obj3))最好,因为您避免了在空对象上调用函数的可能性。

于 2013-08-08T13:52:01.200 回答
1

当您验证引用是否为空时,请使用以下命令:

if(obj != null){
}

或者

if(!(obj == null)){
}
于 2013-08-08T13:50:41.067 回答
0

这些在逻辑上是等价的,这意味着它们将以相同的方式解决:

if(!(obj == null)){
    //some code
}


if(obj != null){
   //some code
}

如果对象为空,这将导致空指针异常:

if(obj.equals(null) || obj2.equals(obj3))

这表示如果一个对象为空或 obj2 等于 obj3,则执行一段代码。

if(obj == null || obj2.equals(obj3)) 
于 2013-08-08T13:52:05.840 回答
0
 public boolean equals(Object obj) {
        return (this == obj);
    }

这就是实际的Object#equals实现。它们在逻辑上都是等价的。

除非调用 Objectobject为 null,object.equals()否则将抛出 NPE。

于 2013-08-08T13:50:59.533 回答