可能重複:
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
好吧,似乎我對這個問題有一個響亮的答案:)謝謝大家,答案將被接受一次最小時間到了。 –