可能重复问题:
这两种条件的区别是什么?
我正在进行一些代码清理,NetBeans建议将
if(!billAddress1.equals(""))
改为 if (!"".equals(billAddress1))
.
这两者之间有什么区别,使用建议版本的优势在于什么,而且如何保证原始版本的易读性?
可能重复问题:
这两种条件的区别是什么?
我正在进行一些代码清理,NetBeans建议将
if(!billAddress1.equals(""))
改为 if (!"".equals(billAddress1))
.
这两者之间有什么区别,使用建议版本的优势在于什么,而且如何保证原始版本的易读性?
billAddress1.equals("")
会导致空指针异常,而"".equals(billAddress1)
则不会。在这里,"".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
来实现更紧凑的语法。
正如其他人所指出的那样,使用它可以避免NPE。但是,如果您确定它不会为null,则更好的检查字符串是否为空的方法是使用String.isEmpty()
方法,这似乎是代码尝试做的事情。
第一个可能会导致NullPointerException。