2012-11-20 130 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()方法,這就是代碼似乎正在嘗試執行的操作。