1. 程式人生 > >java的String類中的null和isEmpty()的區別

java的String類中的null和isEmpty()的區別

程式碼示例如下:

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,由於其為初始化,所以系統並未為其分配空間,其也就沒有存在記憶體中,

所以就無法對其進行測試了;

關注微信公眾號獲取更多資訊