【Java】Object转换为String的三种策略总结
java.lang.Object → java.lang.String
- String str = (String)obj; ,即使用強(qiáng)轉(zhuǎn),從父類型Object向下轉(zhuǎn)型為String。
- String str = obj.toString(); ,即使用Object一定會(huì)存在的toString()方法。
- String str = String.valueOf(obj); ,即使用String類的靜態(tài)方法,將一個(gè)Object類型的變量轉(zhuǎn)成String類型對(duì)象。
StrategyⅠ
由于不僅僅是String,所有類的共同父類都是Object,所以是可以向下轉(zhuǎn)型的。
但是,如果obj實(shí)際上不是String類型的,會(huì)爆java.lang.ClassCastException的。
因此,如果非要用,建議使用 instanceof 先做一下判斷吧。
這種方法的好處就是用這順手、簡(jiǎn)單。
StrategyⅡ
toString()是從Object類就有的方法,直接調(diào)用也很方便。
問題也很明顯,最讓人崩潰的 java.lang.NullPointerException 啊!
如果obj是null的話,直接一長(zhǎng)串空指針……
StrategyⅢ
這個(gè)方法比較神奇,因?yàn)樗?個(gè)重載方法(重載就是方法/函數(shù)同名,但參數(shù)列表個(gè)數(shù)或者類型不同):
- String.valueOf(boolean value): String
- String.valueOf(char value): String
- String.valueOf(char[] data): String
- String.valueOf(double value): String
- String.valueOf(float value): String
- String.valueOf(int value): String
- String.valueOf(long value): String
- String.valueOf(Object data): String
- String.valueOf(char[] data, int start, int length): String
使用的時(shí)候特殊情況是String.valueOf(null),
這時(shí)調(diào)用的是:String.valueOf(Object data)。
(IDE中按住Ctrl就可以追溯引用了)
String.valueOf(Object data)的源碼如下:
public static String valueOf(Object obj) {return obj == null ? "null" : obj.toString(); }最終并不會(huì)空指針,而是返回"null"!
所以這種策略雖然不容易爆異常,但也可能得到不想要的結(jié)果,即"null",所以還是需要處理一下的。
總結(jié)
以上是生活随笔為你收集整理的【Java】Object转换为String的三种策略总结的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 神奇的四次方数(洛谷P1679题题解,J
- 下一篇: 【操作系统】高速缓存和缓冲区