Java中null和""(空字符串)是兩個不同的概念,即便他們看起來比較相似。
在Java中null代表的是一個完全不存在的對象,在內存中以0表示,而""(空字符串)是一個長度為0的字符串對象。
String str = null; System.out.println(str); //輸出null String str2 = ""; System.out.println(str2); //輸出空字符串
從上面的代碼可以看出來,null輸出的是null,而""(空字符串)輸出的是空字符串。
在Java中,使用null來表達未被賦值的狀態時是非常常見的,而使用""(空字符串)來表達這種狀態則可能會引起一些混淆。
如果一個字符串變量在定義時沒有被賦值,那么它的默認值就是null。如果你需要表示這個字符串變量的值是一個空字符串,你需要手動將其賦值為""。
String str = null; System.out.println(str.isEmpty()); //拋出NullPointerException異常 String str2 = ""; System.out.println(str2.isEmpty()); //輸出true
從上面的代碼可以看出來,我們不能在一個null的對象上調用非靜態方法或者訪問他的成員變量,否則會拋出NullPointerException異常。
因為null表示的是一個完全不存在的對象,它沒有任何屬性和方法,所有的方法訪問都會失敗。而""(空字符串)是一個完全存在的對象,所以我們可以在它上面調用相應的方法和訪問相應的屬性。