-1

可能重复:
检查 null - 什么顺序?

谁能告诉我验证“null”的字符串值的更好方法是什么,为什么?

String user = userService.getUserName(accID);

1) if(user != null) {
    ..
   }

2) if(null != user) {
    ..
   }
4

7 回答 7

2

没有区别。第一个版本更常用。

于 2012-10-11T11:15:58.487 回答
2

对于这种情况没关系,尽管第一种方法更常见。

但是,当直接将其输入到 equals 方法中时,首选所谓的 yoda-condition。

例如:

if("".equals(string)){
}

优先于

if(string.equals("")){
}

因为它避免了空指针异常

于 2012-10-11T11:17:35.253 回答
0

第一种方法主要由开发人员使用。我不认为这有什么不同。

于 2012-10-11T11:16:44.087 回答
0

我已经看到了这两种方法。有些人认为最好先给出您要比较的值。如果您有许多选择来查看您首先比较的值,这可能会更好。

我个人使用第一个选项,因为这是我的习惯。

如果这是您的问题,我怀疑是否存在任何性能差异。所有的区别都在于代码风格和可读性。

于 2012-10-11T11:17:01.873 回答
0

由于它没有功能差异并且第一个更具可读性,因此您应该选择第一个。

于 2012-10-11T11:17:03.770 回答
0

在这种情况下,这是一个品味问题。

在其他情况下,例如,如果您要与字符串文字/常量进行比较,我更喜欢这样:

if ("yourStringConstant".equals(yourVariable))

因为这也可以处理 yourVariable 为空的情况。如果你换一种方式,你会得到一个 NullPointerException:

if (yourVariable.equals("yourStringConstant"))
于 2012-10-11T11:19:41.817 回答
0

第二种方法来自 C/C++。当您编写if (user = null)而不是if (user == null)用 C 编写时,您会得到一个逻辑错误,而不是编译错误,而且这样的错误可能真的很难检测到。

但是如果你写if(null = user)而不是if(null == user)你会得到一个编译错误,因为你不能将变量分配给null. 这就是为什么在那里经常使用颠倒的参数顺序的原因。

但是在 Java 中,这没有多大意义,因为 Java 编译器不会采用if(user = null)表达式,因此您可以使用任何方法。第一个虽然更普遍

于 2012-10-11T11:23:18.307 回答