1. 程式人生 > >Java 中關於String的空物件(null) ,空值(empty),空格 的總結

Java 中關於String的空物件(null) ,空值(empty),空格 的總結

Java 中關於String 物件的空物件(null), 空值(""),空格(" ")對於很多人來說很模糊,下面將分別介紹一下他們的用法:定義,判斷,運算。

首先,先上程式碼:

private void testStringNullOrEmpty() {

		// 如果s=null代表空物件,即還沒創建出物件,就是還沒開闢空間,。
		// 如果s = ""表示創建出了物件,但是這個物件內容為空,也就是空字串。
		// 如果s = " "表示創建出了物件,但是這個物件內容為不為空,而是空格。

		String s = null;
		String k = "";
		String n = " ";
		String t = "ab";

		Log.d(TAG, "s = " + s);                    //output : s = null
		Log.d(TAG, "k = " + k);                    //output : k = 
		Log.d(TAG, "t = " + t);                    //output : t = ab
		Log.d(TAG, "n = " + n);                    //output : n = 
		Log.d(TAG, "t.length() = " + t.length());  //output : t.length() = 2
		Log.d(TAG, "k.length() = " + k.length());  //output : k.length() = 0
		Log.d(TAG, "n.length() = " + n.length());  //output : n.length() = 1

		//equals方法比較的是兩個物件的內容是否相同,因此,物件必須有指向的空間,即不能為null,否則,會丟擲異常。
		Log.d(TAG, "k.equals(null) = " + k.equals(null));  //output : k.equals(null) = false
		Log.d(TAG, "k.equals(\"\") = " + k.equals(""));     //output : k.equals("") = true
		Log.d(TAG, "k.equals(\" \") = " + k.equals(" "));   //output : k.equals(" ") = false
		Log.d(TAG, "n.equals(\"\") = " + n.equals(""));     //output : n.equals("") = false
		Log.d(TAG, "n.equals(\" \") = " + n.equals(" "));   //output : n.equals(" ") = true
		// Log.d(TAG, "s.equals(null) = " + s.equals(null)); //異常
		Log.d(TAG, "k.isEmpty() = " + k.isEmpty());         //output : k.isEmpty() = true
		Log.d(TAG, "n.isEmpty() = " + n.isEmpty());         //output : n.isEmpty() = false
		// Log.d(TAG, "s.isEmpty() = " + s.isEmpty());      //異常

		Log.d(TAG, "s == null = " + (s == null));          //output : s == null = true

		// 在使用"+"操作符時,如果有一個運算元是字串,其他運算元會被轉換成字串
		s = s + t;
		Log.d(TAG, "after (s + t) s = " + s);                //output : after (s + t) s = nullab
		Log.d(TAG, "s.length() = " + s.length());            //output : s.length() = 6
		Log.d(TAG, "s == null = " + (s == null));           //output : s == null = false

	}

定義

空物件:

String s = null; 
空物件是指定義一個物件s,但是沒有給該物件分配空間,即沒有例項化該物件,因此,空物件在呼叫所有物件方法時候都會丟擲異常,如s.length(), s.isEmpty()等方法。

空值:

String k = ""; 空值是指一個字元床物件已經例項化,即系統已經給該變數分配了空間,只是物件的內容為空。

空格:

String n = " ";

是指一個字元物件已經例項化,物件的內容為空格。

判斷

對於上述三種情況,如何判斷一個字元變數屬於上述型別,下面主要介紹下方法:

空物件判斷:

判斷一個字元變數是否是null ,使用 邏輯判斷 等於(==)與null物件比較,程式碼表達式如下:
s == null; 
注意: 空物件不能使用諸如equals(), isEmpty()等物件方法,因為它未被例項化。

空值判斷:

判斷空值可有三種方式:     (1)equals方法比較的是兩個物件的內容是否相同,可用表達語句:k.equals("") ;

      (2)  length()方法是檢視某個字串物件的字元個數,可用表示式判斷:k.length() == 0 ;

(3)  isEmpty()方法是判斷某個字串物件字元個數時候為0,可用表示式判斷:k.isEmpty() ;

空格判斷:

空格內容為一個空格,雖然在輸出顯示時候和空值一樣,都是空的,但是在系統裡面的記憶體機制不一樣的,空格字串表示該物件的記憶體空間裡面有內容,是空格,字元個數是1,因此,在使用如下方法時候結果如下:

n.length() 的輸出值為1, n.isEmpty()輸出為false。

判斷語句: n.equals(" ") ;

運算

字串提供了"+"操作符,表示兩個字串物件可以連結一起,在使用該運算時候,有這樣一條規則:如果有一個運算元是字串,其他運算元會被轉換成字串。

在上面程式碼s = s + t; s申明時候為空物件,通過"+"時,會將null轉化為一個字串物件。因此結果是nullab。

大家可以對照上面程式碼例子,更加詳細的瞭解這三者實現機制。