分享

关于String.valueOf()和.toString的问题

 我的java之路 2016-12-27
我一般转换成字符串时喜欢用.toString
但有一个项目里我用.toString以后总报无法类型转换的异常。
这让我很郁闷,后来我把.toString 都改成 String.valueOf() 就不报任何错误。
所以我想问什么时候应该用.toString,什么时候应该使用String.valueOf()。
另外它们两的转换机制是什么?
更多 0 分享到:



回复次数:20
YidingHe
关注
YidingHe
捏造的信仰
本版等级:T7

#2 得分:2 回复于: 2008-07-04 10:36:33
这种问题还用得着问?自己看源代码不就知道了。
youhere1
关注
youhere1
youhere1
本版等级:T2

#3 得分:2 回复于: 2008-07-04 10:37:15
不清楚,mark下
bao110908
关注
bao110908
火龙果被占用了
本版等级:T10
Blank
红花 2011年3月 Java大版内专家分月排行榜第一
2010年4月 Java大版内专家分月排行榜第一
2010年3月 Java大版内专家分月排行榜第一
2007年8月 Java大版内专家分月排行榜第一
Blank
黄花 2011年4月 Java大版内专家分月排行榜第二
2010年8月 Java大版内专家分月排行榜第二
2010年5月 Java大版内专家分月排行榜第二
2008年2月 Java大版内专家分月排行榜第二
2007年7月 Java大版内专家分月排行榜第二
Blank
蓝花 2011年2月 Java大版内专家分月排行榜第三
2010年9月 Java大版内专家分月排行榜第三
2008年9月 Java大版内专家分月排行榜第三
2008年1月 Java大版内专家分月排行榜第三
2007年11月 Java大版内专家分月排行榜第三
2007年9月 Java大版内专家分月排行榜第三
#4 得分:2 回复于: 2008-07-04 10:54:04
Java code?
1
2
3
public static String valueOf(Object obj) {
    return (obj == null) ? "null" : obj.toString();
}


不知道你为什么会有这样的异常。上面这个是 String.valueOf 方法的源代码,
内部调用的也是对象的 toString() 方法。
dollyn
关注
dollyn 版主
霜之哀伤
本版等级:T7

#5 得分:2 回复于: 2008-07-04 10:58:18
所以,还是用String.valueOf好些了?可以避免空指针
dinglinhu
关注
dinglinhu
dinglinhu
本版等级:T3

#6 得分:0 回复于: 2008-07-04 11:01:25
引用 2 楼 YidingHe 的回复:
这种问题还用得着问?自己看源代码不就知道了。


呵呵,问题是我看源代码前找不着任何原因。
用String.valueOf()就没事但用.toString就错误。
所以我想知道我们这里csdn里的高手们有没有出现过这种情况。
因为这个问题我本人实在是不解。

不会是java本身的错误吧?^^
cnoolon
关注
cnoolon
cnoolon
本版等级:T3

#7 得分:2 回复于: 2008-07-04 11:11:45
八成是你的参数为null,调用toString方法就报异常了!
而valueOf()方法因为做了是否为null的判断,如过是null就返回null,不是就返回toString()后的字符串,
ilysony
关注
ilysony
SoulTo23
本版等级:T5
Blank
黄花 2011年4月 专题开发/技术/项目大版内专家分月排行榜第二
#8 得分:1 回复于: 2008-07-04 11:35:33
引用 4 楼 bao110908 的回复:
Java codepublic static String valueOf(Object obj) {
    return (obj == null) ? "null" : obj.toString();
}



不知道你为什么会有这样的异常。上面这个是 String.valueOf 方法的源代码, 
内部调用的也是对象的 toString() 方法。
xuhaiyang
关注
xuhaiyang
xuhaiyang
本版等级:T5

#9 得分:1 回复于: 2008-07-04 11:36:03
引用 6 楼 dinglinhu 的回复:
引用 2 楼 YidingHe 的回复:
这种问题还用得着问?自己看源代码不就知道了。 
 

呵呵,问题是我看源代码前找不着任何原因。 
用String.valueOf()就没事但用.toString就错误。 
所以我想知道我们这里csdn里的高手们有没有出现过这种情况。 
因为这个问题我本人实在是不解。 

不会是java本身的错误吧?^^

不会是java本身的错误,这可以肯定,应该是你调用toString()方法的对象为null
这点String.valueOf()帮你处理了,.toString则没有,所以出错
dinglinhu
关注
dinglinhu
dinglinhu
本版等级:T3

#10 得分:0 回复于: 2008-07-04 11:41:01
恩,也有道理
rascalboy520
关注
rascalboy520
rascalboy520
本版等级:T5

#11 得分:1 回复于: 2008-07-04 12:18:04
7楼说的对,所以如果想用toString的话,先做一个非空判断,这是写程序的一个好习惯,
public static String valueOf(Object obj) {
    return (obj == null) ? "null" : obj.toString();
}
从这里也可以看出,valueOf是做了非空判断的,

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多