1. 程式人生 > 其它 >toString()、String.valueOf、(String)強轉,有啥區別?

toString()、String.valueOf、(String)強轉,有啥區別?

一、程式碼例項

1、基本型別

(1)基本型別沒有toString()方法

(2)基本型別推薦使用String.valueOf()

(3)基本型別0無法強轉

(String)是標準的型別轉換,將Object型別轉為String型別,使用(String)強轉時,最好使用instanceof做一個型別檢查,以判斷是否可以進行強轉,否則容易丟擲ClassCastException異常。需要注意的是編寫的時候,編譯器並不會提示有語法錯誤,所以這個方法要謹慎使用。

強轉案例:

加上instanceof判斷:

2、封裝型別

(1)toString

(2)String.valueOf()也可以

(3)封裝型別0無法強轉

3、null值問題

(1)toString()報空指標異常

(2)String.valueOf()返回字串“null”

(3)null值強轉成功

二、原始碼分析

1、toString()

2、String.valueOf()

String.valueOf()比toString多了一個非空判斷。

三、總結

1、toString(),可能會拋空指標異常

在這種使用方法中,因為java.lang.Object類裡已有public方法.toString(),所以java物件都可以呼叫此方法。但在使用時要注意,必須保證object不是null值,否則將丟擲NullPointerException異常。採用這種方法時,通常派生類會覆蓋Object裡的toString()方法。

2、String.valueOf(),推薦使用,返回字串“null”

String.valueOf()方法是小編推薦使用的,因為它不會出現空指標異常,而且是靜態的方法,直接通過String呼叫即可,只是有一點需要注意,就是上面提到的,如果為null,String.valueOf()返回結果是字串“null”。而不是null。

3、(String)強轉,不推薦使用

(String)是標準的型別轉換,將Object型別轉為String型別,使用(String)強轉時,最好使用instanceof做一個型別檢查,以判斷是否可以進行強轉,否則容易丟擲ClassCastException異常。需要注意的是編寫的時候,編譯器並不會提示有語法錯誤,所以這個方法要謹慎的使用。