可能重复:
Difference between these two conditions?比较字符串:string.equals( “”)!与 “” 等于(字符串)
我做了一些代码清理NetBeans提出了更改
if(!billAddress1.equals(""))
至if (!"".equals(billAddress1))
的建议。
这两者之间的区别是什么,以及在原始版本的可读性上使用建议版本的优势?
可能重复:
Difference between these two conditions?比较字符串:string.equals( “”)!与 “” 等于(字符串)
我做了一些代码清理NetBeans提出了更改
if(!billAddress1.equals(""))
至if (!"".equals(billAddress1))
的建议。
这两者之间的区别是什么,以及在原始版本的可读性上使用建议版本的优势?
billAddress1.equals("")
将导致一个NullPointerException如果billAddress1
是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
。
如果值为空,后者不会导致空指针异常。
第一个有可能导致NullPointerException。
像其他人指出的那样,您可以将您从NPE中拯救出来。但是如果您确定它不会为空,那么检查字符串是否为空的更好方法是使用String.isEmpty()
方法,这就是代码似乎正在尝试执行的操作。
看到这篇文章: - http://stackoverflow.com/questions/13084049/difference-between-these-two-conditions/13084072#13084072 –
添加此问题:http://stackoverflow.com/questions/9888508/字符串等于参数排序 – hmjd
好吧,似乎我对这个问题有一个响亮的答案:)谢谢大家,答案将被接受一次最小时间到了。 –