null!=variable和variable!=null有什么区别?

6
"

null!=variablevariable!=null 有什么区别呢?哪种方法更好用?

"
if ((null != value1) || (null != value2) || (null != value3)) {
            .......
            .......
            .......
}

或者
if ((value1 != null) || (value2 != null) || (value3 != null)) {
                .......
                .......
                .......
}

请建议最佳的选项以及它们之间的逻辑变化是什么?

4
没有区别。在过去的日子里,也许现在仍然如此,像C这样的语言经常推荐使用constant != x,这被称为Yoda Conditions,有助于避免出现类似x = constant的情况,因为constant = x会引发编译器错误。(然而,在Java中,唯一需要注意这种情况的是与boolean进行比较时,但无论如何都应该避免这种情况。) - user2864740
我曾经看到过代码将null与变量进行比较,这就是我提出这个问题的原因。 - JiniKJohny
在调用方法之前,你必须确保表达式不为空,以免引发空指针异常(NPE)。然而,无论是null != x还是x != null都没有关系。选择一个并保持一致(这也意味着遵循项目中已经使用的形式)。 - user2864740
6个回答

5

没有区别。

但是人们经常写"abc".equals(foo),而不是foo.equals("abc"),以避免空指针异常。


4

没有什么不同。

我更喜欢使用value != null,纯粹是为了可读性的原因。


3

这两种比较方式都是正确的。在逻辑上没有区别,但程序员更喜欢使用value!=null。


2

在C语言中,赋值操作符看起来与比较操作符类似:

lvalue = rvalue;
lvalue == rvalue;

lvalues(变量)可以被赋值。rvalues 可以是表达式。Null 不能被赋值,所以如果你坚持使用null作为比较中的lvalue,那么编译器会捕捉到像下面这样的语句中第二个等号的遗漏:

null = rvalue;

你可能会意外地将 null 赋值给:

lvalue = null;


2

null != value 是从C语言遗留下来的。在C中,你可以这样编译代码而不会收到警告:if (variable = null)(这是错误的代码),而你实际上可能想要写成 if (variable == null)

但在Java中,这两种方式都可以使用。


1

正如其他人所提到的那样,没有区别,但我还没有遇到过什么

null != value2 

我总是将其视为value2 != null,就像thihara所说的那样,这样更易于阅读。我认为对于初学者来说,保持value!= null的方式也是不错的选择,因为他们可能会在阅读别人的代码时有些迷惑,尽管这两种方式没有区别。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接