java的String類中的null和isEmpty()的區別
阿新 • • 發佈:2019-02-15
程式碼示例如下:
package com.example; public class MyClass { public static void main(String[] args){ String test1 = ""; String test2 = null; /***還未為其分配空間,所以不可用**/ String test3; String test4 = new String(); if(test1.isEmpty()){ System.out.println("1-test1 is empty"); } if(test1 == null){ System.out.println("2-test1 is null"); } /*** * NullPointException * **/ /** if(test2.isEmpty()){ System.out.println("3-test2 is empty"); }***/ if(test2 == null){ System.out.println("4-test2 is null");} /** * 由於test3,其並未初始化, * 所以系統並不會為其分配空間, * 也就表明其並不存在記憶體中, * 所以在這裡就無法進行測試,故略之... * **/ if(test4.isEmpty()){ System.out.println("5-test4 is empty"); } if(test4 == null){ System.out.println("6-test4 is null"); } } }
執行結果如下:
注:
1>
我們將3的test2.isEmpty()在此註釋掉了,主要是因為其會出現異常;
2>從1和4的輸出來看,我們可以知道,當字串的值為空時,也就是其為 “”時 ,
則此時字串的 isEmtpy()返回的結果為true;當字串為 null 時,則此時字串的isEmpty()會出現空指標異常
一言以蔽之就是:
isEmpty()的判斷和null的判斷,兩者是有區別的,不可作為一種情況去處理!!!
3>對於“String test4 = new String()”,其預設的初始值是為“”,而不是為null
4>對於test3,由於其為初始化,所以系統並未為其分配空間,其也就沒有存在記憶體中,
所以就無法對其進行測試了;
關注微信公眾號獲取更多資訊