可能重复:
这两个条件之间的区别?
我正在做一些代码清理,NetBeans 提出了更改建议
if(!billAddress1.equals(""))
到if (!"".equals(billAddress1))
.
两者之间有什么区别,以及使用建议版本相对于原始版本的可读性的优势?
可能重复:
这两个条件之间的区别?
我正在做一些代码清理,NetBeans 提出了更改建议
if(!billAddress1.equals(""))
到if (!"".equals(billAddress1))
.
两者之间有什么区别,以及使用建议版本相对于原始版本的可读性的优势?
billAddress1.equals("")
billAddress1
如果是,将导致 NullPointerException null
,"".equals(billAddress1)
不会。
// Could cause a NullPointerException if billAddress1 is null
if(!billAddress1.equals(""))
// Will not cause a NullPointerException if billAddress1 is null
if (!"".equals(billAddress1))
!"".equals(billAddress1)
永远不会导致NPE
,因此它允许摆脱billAddress1 == null
原本需要的 ,从而允许更紧凑的语法。
如果值为 null,则后者不会导致 Null 指针异常。
正如其他人所指出的那样,一个可以将您从 NPE 中拯救出来。但是,如果您确定它不会为空,那么检查字符串是否为空的更好方法是使用该String.isEmpty()
方法,这就是代码似乎正在尝试做的事情。
第一个有可能导致 NullPointerException。