在java中檢查非空值的最佳方法是什麼?Java string null檢查!= null或!str.equals(null)?
String query ="abcd";
query != null
VS !query.equals(null).
哪個更好?爲什麼?
在java中檢查非空值的最佳方法是什麼?Java string null檢查!= null或!str.equals(null)?
String query ="abcd";
query != null
VS !query.equals(null).
哪個更好?爲什麼?
1日一個更好(和唯一的選擇),因爲第二屆一個將拋出NPE
,當你的價值實際上是null
。 就這麼簡單。
嘗試了這一點:
String str = null;
str.equals(null); // will throw `NPE`.
因此,基本上,你要執行本身的測試觸發第二個情況下NullPointerException
。所以,這是沒有選擇的。
query != null
好像!query.equals(null)
會在查詢實際上爲空時拋出異常。此外query != null
易讀
!str.equals(null)
將
空的點檢查是爲了確保在此代碼str
中的引用實際上是指對象。如果它爲空,則不能調用上的任何方法,包括equals
,而不會拋出NullPointerException
...其中空值檢查的目的是爲了避免發生。
因此!str.equals(null)
導致非常問題的空檢查是爲了防止和根本不做你的想法。永遠不要這樣做。
+1,我對'str.equals(null)'提出了相同的觀點總是會返回false,但我的回答並不清楚具體情況題.. :) – PermGenError 2013-02-13 21:11:17
query != null
比較對象是否爲null
。 query.equals("something")
比較該對象內部的值。 string == "something
」。所以在這種情況下使用query != null
。
.equals默認爲,只要它沒有明確覆蓋。 – 2013-02-13 21:07:11
== @JaynathanLeung。你說的是'String'對象呢? – 2013-02-13 21:08:07
@RohitJain是否有任何類型的'字符串'不是對象嗎?就我所知,沒有什麼原始的等價物... – 2013-02-13 21:10:09