可能重复:
检查 null - 什么顺序?
谁能告诉我验证“null”的字符串值的更好方法是什么,为什么?
String user = userService.getUserName(accID);
1) if(user != null) {
..
}
2) if(null != user) {
..
}
可能重复:
检查 null - 什么顺序?
谁能告诉我验证“null”的字符串值的更好方法是什么,为什么?
String user = userService.getUserName(accID);
1) if(user != null) {
..
}
2) if(null != user) {
..
}
没有区别。第一个版本更常用。
对于这种情况没关系,尽管第一种方法更常见。
但是,当直接将其输入到 equals 方法中时,首选所谓的 yoda-condition。
例如:
if("".equals(string)){
}
优先于
if(string.equals("")){
}
因为它避免了空指针异常
第一种方法主要由开发人员使用。我不认为这有什么不同。
我已经看到了这两种方法。有些人认为最好先给出您要比较的值。如果您有许多选择来查看您首先比较的值,这可能会更好。
我个人使用第一个选项,因为这是我的习惯。
如果这是您的问题,我怀疑是否存在任何性能差异。所有的区别都在于代码风格和可读性。
由于它没有功能差异并且第一个更具可读性,因此您应该选择第一个。
在这种情况下,这是一个品味问题。
在其他情况下,例如,如果您要与字符串文字/常量进行比较,我更喜欢这样:
if ("yourStringConstant".equals(yourVariable))
因为这也可以处理 yourVariable 为空的情况。如果你换一种方式,你会得到一个 NullPointerException:
if (yourVariable.equals("yourStringConstant"))
第二种方法来自 C/C++。当您编写if (user = null)
而不是if (user == null)
用 C 编写时,您会得到一个逻辑错误,而不是编译错误,而且这样的错误可能真的很难检测到。
但是如果你写if(null = user)
而不是if(null == user)
你会得到一个编译错误,因为你不能将变量分配给null
. 这就是为什么在那里经常使用颠倒的参数顺序的原因。
但是在 Java 中,这没有多大意义,因为 Java 编译器不会采用if(user = null)
表达式,因此您可以使用任何方法。第一个虽然更普遍