为了账号安全,请及时绑定邮箱和手机立即绑定

关于构造函数

关于构造函数

qq_不睡觉的怪叔叔_0 2016-11-11 15:44:48
在本类中new hello()时,为什么会自动调用toString()方法
查看完整描述

3 回答

?
乔小欠儿

TA贡献18条经验 获得超15个赞

哈哈 你这个代码很有趣,我特意自己试了下,然后看了下System.out.print()方法的源码,找到了原因。

首先你的hello类重写了toString方法,你在main方法中调用了System.out.print(new hello()),为了找到原因我们看下System.out.print方法里干了什么。

按住ctrl鼠标点击print,看到了print方法的源码如下:

public void print(Object obj) {

        write(String.valueOf(obj));

    }

我们可以看到String.valueOf(obj),obj不就是hello类的对象嘛,我们再看看String.valueOf这个方法里做了什么鬼事情。

关键的来了,String.valueOf里一看全明白了,源码实现如下:

public static String valueOf(Object obj) {

        return (obj == null) ? "null" : obj.toString();

    }

obj是我们的hello类的对象,obj是我们自己传进来的,肯定不会为空吧,那就调用了obj.toString方法呗。我们的hello类正好重写了此方法,然后就被顺理成章的调用了。然后打印了toString里的字符。

查看完整回答
1 反对 回复 2016-11-11
?
破东风一路向北

TA贡献8条经验 获得超5个赞

打印对象的时候默认调用toString()方法

查看完整回答
反对 回复 2016-11-11
?
sntatas

TA贡献53条经验 获得超11个赞

打印一个对象时自动调用对象的toString()方法,打印的是基本类型时,调用包装类的toString()方法

查看完整回答
反对 回复 2016-11-11
?
AbyssWalker

TA贡献17条经验 获得超5个赞

toString()方法就在hello类里,new hello()实例化后当然会调用了

查看完整回答
反对 回复 2016-11-11
  • 3 回答
  • 0 关注
  • 1773 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信