- String:毫無疑問,這種就是強轉形式,簡單方便,效率高。java程序員可能看到效率高或許有些激動,但是它有他的不好,那就是局限性。在java的世界里沒有什么東西是沒有缺點的,總有一些好的方面同時也有一些不好的。不好的就是,他只能是強轉原本就是字符串的東西,如果原本不是字符串的話,那么就會報錯。比如:
12345
Boolean boolean1 =
true
;
String str3 = (String)boolean1;
//這行代碼會報錯,編譯不過
String str4 = boolean1.toString();
//正常
String str5 = String.valueOf(boolean1);
//正常
通過上面的例子我們就很清晰的明白了,String強轉的方式固然輕松,那么它是有很大的局限性的。在用的時候要謹慎。
- toString():在API文檔中是這樣說的,返回此對象本身(它已經是一個字符串了!!!)。按照它的意思就是說一般的對象或者參數都是有toString()的方法的,只是要注意在一個參數定義為int類型是就沒有這個方法了。還有就是當參數為空的時候.toString()方法就會報出空指針異常,這是這個方法的不好的地方使用時需要仔細斟酌一下。比如:
12
Object obj = getObject();
Syystem.out.println(obj.toString());
就如這上面的代碼表示的一樣,如果obj不為空,那么就能正常編譯,那么如果obj取出來為空的話,那么就會報出空指針異常的。
- 最重要的角色出場了String.valueOf():這個方法是靜態的,直接通過String調用,可以說是完美,只是平時不習慣這樣寫而已,這樣的實現避免了前面兩個的不足和缺點。首先來看看他內部的實現機制:
1
public
static
String valueOf(Object obj){
return
(obj==
null
) ?
"null"
: obj.toString()};
在內部就是做了為空的判斷的,所以就不會報出空指針異常。
總結:這三者的使用,個人覺得應該使用String.valueOf()的方式。這樣的使用安全可靠,不會帶來異常。說的有不對的地方,希望大家指正批評。
參考:
String、String.valueOf、toString 它們三者的區別總結