java中,Object类的toString方法的调用机制,高手请进。

[复制链接]
查看11 | 回复3 | 2012-2-28 23:08:46 | 显示全部楼层 |阅读模式
我们知道,System.out.println(对象),在当前对象中,没有覆盖toString方法的情况下,这语句可以打印出该对象的类名,哈希码等等。其中out对象是PrintStream类型,PrintStream类中的print、println等类似方法并没有发现调用了对象的toString方法。到目前为止,我查看源代码,没有看到这样的显式调用,那么问题是,难道编译器自动地去调用toString方法吗?
希望回答者能够引用源码来证明toString()被显式调用。 如果有好的回答,我会加分的

回复

使用道具 举报

千问 | 2012-2-28 23:08:46 | 显示全部楼层
这个问题其实比较简单的,大家可以直接看Java中相关类的源代码就可以知道了。现在的问题是,当用户调用print或println方法打印一个对象时,为什么会打印出对象的toString()方法的返回信息。public String toString() {return getClass().getName() + "@" + Integer.toHexString(hashCode());
}1.这个是Ojbect中的toString()方法,toString会打印出return信息。public void println(Object x) {
String s = String.valueOf(x
回复

使用道具 举报

千问 | 2012-2-28 23:08:46 | 显示全部楼层
当一个Object实例被转化成String时,Java就会自动调用toString()方法返回一个String。System.out.println标准输出,只能输出String,所以,所有需要输出的Object都会被转化成String。如果你没有覆盖toString,那么,Java会自动调用最上层父类Object的toString()方法。其内
回复

使用道具 举报

千问 | 2012-2-28 23:08:46 | 显示全部楼层
隐式调用,子类调用父类的方法,因此正常情况下省略
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行