淺談(String),toString() ,String.ValueOf() 3種類型轉換
由於在專案中,出現String型別轉換的問題,我在網上查了一下,然後總結了一下。
1、(String)
這是標準的型別轉換,將object轉成String型別的值。使用這種方法時,需特別小心的是因定義為 Object 型別的物件在轉成String時語法檢查並不會報錯,這將可能導致潛在的錯誤存在。這時要格外小心。
例: Object obj = new Integer(100); String strVal = (String)obj;
在執行時將會出錯,因為將Integer型別強制轉換為String型別,無法通過。
但是, 如果obj為null,不會報錯,因null值可以強制轉換為任何java類型別,(String)null也是合法的。
2、toString()
在java中,從嚴格意義上任意的java物件都可以呼叫toString(),但是有一點要注意,這個值不能為null,否則會報空指標異常。採用這種方法時,通常派生類會覆蓋Object裡的toString()方法
3、String.valueOf()
toString()是String.valueOf()的基礎,但不同的是String.valueOf()自帶了判斷為null的條件,當為null時,String.valueOf()返回的是“null”。
在看java jdk String.valueOf()的原始碼時是這樣的:public static String valueOf(Object obj) { return (obj == null) ? "null" : obj.toString(); }
從這個可以看出它用了表示式來判斷,如果為null的時候,則自動返回一個為“null”的字串。這樣就無須擔心該obj是否為空而報異常了。
寫這個也是讓自己對string 型別轉換 的印象更深刻一點。畢竟好記性不如爛筆頭。
public static String valueOf(Object obj) { return (obj == null) ? "null" : obj.toString(); }