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()的不同只是個人的吹毛求疵,這種業務場景還是很少見的...所以有時候還要多加思考一下.