黑马程序员技术交流社区

标题: 关于toString使用的几个疑惑? [打印本页]

作者: 王虎    时间: 2012-10-21 20:33
标题: 关于toString使用的几个疑惑?
什么时候调用Object的toString方法?什么时候调用自己写的toString方法?
比如打印StrinBuilder时,就需要调用------点个点调用,但是打印Integer对象时却不用调用-------没有点点调用,这俩的帮助文档里都有toString,还有打印自定义对象时只是重写了,也没有“对象点个点调用”啊?
作者: 江苏孙浩    时间: 2012-10-21 21:10
本帖最后由 江苏孙浩 于 2012-10-21 21:11 编辑

个人理解:
01 关于Object的toString()和具体类的toString()只是关于多态的问题
02 对于打印int或者Integer类型,可以看到,实际上系统调用的是println(Obejct obj)这么一个函数,这样在println内部可以为你调用toString()方法,所以实际上也是调用toString()方法的,只是调用代码不是你写的;而StringBuffer比如用来生成字符串作为return的值的时候,首先明确StringBuffer不是String的派生类,所以不能直接转换为String,那么实际要转换为String就需要调用其toString()方法。
作者: 王虎    时间: 2012-10-21 21:19
重写必须调用吗?什么情况需要调用,什么情况不需要调用?
作者: 江苏孙浩    时间: 2012-10-21 21:34
王虎 发表于 2012-10-21 21:19
重写必须调用吗?什么情况需要调用,什么情况不需要调用?

觉得本质上,要将非String派生类的对象转为String,必须调用相关操作,比如toString();但是一些方法,如println中,可以为你调用toString();必须有人调用toString(),如果这个人不是 类库,那么就是你了
作者: 王虎    时间: 2012-10-21 21:40
你的解释把我点通了,谢了啊哥们!




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2