Java 中關於String的空物件(null) ,空值(empty),空格 的總結
阿新 • • 發佈:2019-02-01
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物件比較,程式碼表達式如下:注意: 空物件不能使用諸如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。
大家可以對照上面程式碼例子,更加詳細的瞭解這三者實現機制。