4

可能重复:
这两个条件之间的区别?

我正在做一些代码清理,NetBeans 提出了更改建议

if(!billAddress1.equals(""))if (!"".equals(billAddress1)).

两者之间有什么区别,以及使用建议版本相对于原始版本的可读性的优势?

4

6 回答 6

8

billAddress1.equals("")billAddress1如果是,将导致 NullPointerException null"".equals(billAddress1)不会。

于 2012-11-20T19:27:39.197 回答
3
// Could cause a NullPointerException if billAddress1 is null
if(!billAddress1.equals(""))

// Will not cause a NullPointerException if billAddress1 is null
if (!"".equals(billAddress1))
于 2012-11-20T19:27:32.850 回答
3

!"".equals(billAddress1)永远不会导致NPE,因此它允许摆脱billAddress1 == null原本需要的 ,从而允许更紧凑的语法。

于 2012-11-20T19:27:39.043 回答
2

如果值为 null,则后者不会导致 Null 指针异常。

于 2012-11-20T19:28:46.667 回答
2

正如其他人所指出的那样,一个可以将您从 NPE 中拯救出来。但是,如果您确定它不会为空,那么检查字符串是否为空的更好方法是使用该String.isEmpty()方法,这就是代码似乎正在尝试做的事情。

于 2012-11-20T19:32:01.500 回答
1

第一个有可能导致 NullPointerException。

于 2012-11-20T19:29:03.427 回答