手寫String.valueOf(),String和toString

String強轉,String.valueOf()和toString都能達到將一個類型轉化爲String類型,或者說,獲取到String類型的值;

 

        String suc = "6666";
        String valueStr = String.valueOf(suc);
        String toStr = suc.toString();
        String strStr = (String)suc;

都可以達到目的..這是同,其異的地方在哪裏呢....

String強轉

之 ClassCastException

既然是強轉,肯定是具有繼承關係之間的強轉及基礎數據類型那幾個之間的轉換.(或者不成立,父類對象指向子類對象的引用)

但是一點,如果強轉的類型不一致,就會出現如下問題:

 

toString()方法

之NullPointerException

toString的好處之一更多的是,我們在實體對象中重寫toString()方法,以更直觀的展示對象之間的屬性名稱及屬性值.

但是,toString(),即使是重寫的時候,也是對應當前對象是否存在,即null類型的判斷

 

String.valueOf()

之null與"null"的恆等;

String.valueOf()使用的地方是比上述的方法要強大了....該方法返回的就是一個String,而內部是實現了toString的方法,即:

首先一點,避免了toString的空指針問題...同樣,由於該方法對所有的object都實現了獲取其String類型的值,故也不存在classCast的問題;即使這樣他也不是萬能的;

即使我將intA改爲String 類型....String會將一個null值轉化爲值null;同樣的"null"值也是的...

這樣是有一丁點兒歧義的...

 

總結:

其實String.valueOf()的不同只是個人的吹毛求疵,這種業務場景還是很少見的...所以有時候還要多加思考一下.

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章