Java中的null是一個特殊的值,表示無值、空值或缺失值。只有引用類型可以為null,基本類型不能。當一個引用類型的變量未初始化或賦值為null時,它就指向null。
null比較是對引用類型進行比較,而不是對對象的內容進行比較。可以使用==運算符或者equals()方法進行比較。當兩個引用類型都為null時,它們是相等的。如下面的例子所示:
String str1 = null; String str2 = null; System.out.println(str1 == str2); //輸出true System.out.println(str1.equals(str2)); //會報NullPointerException異常
在第一個比較中,兩個引用類型都指向null,所以它們是相等的。在第二個比較中,因為str1和str2都為null,所以調用equals()方法會導致NullPointerException異常。
需要注意的是,在比較引用類型和null時,要將null放在比較運算符的右側。如果將null放在左側,會導致編譯錯誤:
String str = null; if (null == str) { //do something } if (str == null) { //編譯錯誤:Incomparable types:and String //do something }
在第一個if語句中,將null放在比較運算符的右側,代碼可以正常編譯。在第二個if語句中,將null放在左側導致編譯錯誤。
總的來說,null是Java中一個非常有用的特殊值,但要注意使用null比較時的細節。