2012-11-20 86 views
4

可能重复:
Difference between these two conditions?比较字符串:string.equals( “”)!与 “” 等于(字符串)

我做了一些代码清理NetBeans提出了更改

if(!billAddress1.equals(""))if (!"".equals(billAddress1))的建议。

这两者之间的区别是什么,以及在原始版本的可读性上使用建议版本的优势?

+1

看到这篇文章: - http://stackoverflow.com/questions/13084049/difference-between-these-two-conditions/13084072#13084072 –

+0

添加此问题:http://stackoverflow.com/questions/9888508/字符串等于参数排序 – hmjd

+0

好吧,似乎我对这个问题有一个响亮的答案:)谢谢大家,答案将被接受一次最小时间到了。 –

回答

7

billAddress1.equals("")将导致一个NullPointerException如果billAddress1null"".equals(billAddress1)不会。

3
// Could cause a NullPointerException if billAddress1 is null 
if(!billAddress1.equals("")) 

// Will not cause a NullPointerException if billAddress1 is null 
if (!"".equals(billAddress1)) 
3

!"".equals(billAddress1)永远不会导致NPE,所以它允许更简洁的语法,通过允许摆脱否则将需要的billAddress1 == null

2

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

1

第一个有可能导致NullPointerException。

2

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