【为什么重写tostring,打印对象】

为什么实体类重写toString后,可以打印对象?

一、背景

当一个类没有重写tostring方法时侯,该类就会继承Object类的tostring方法。
1.Object.toString():

public String toString() {
        return getClass().getName() + "@" + Integer.toHexString(hashCode());
    }

通过例子测试出来:

//Student未重写toString方法
Student s = new Student();
System.out.println(s);

打印结果:

day627.serial.Student@2401f4c3

打印结果就是拼接了反射获得类名+类的哈希值

二、意义

那为什么会这样呢
我们从println的源码出发

public void println(Object x) {
        String s = String.valueOf(x);
        synchronized (this) {
            print(s);
            newLine();
        }
    }

可以很明显看出,让你输入一个Object x时候,x会被转成字符串。
我们进去valueOf()

public static String valueOf(Object obj) {
        return (obj == null) ? "null" : obj.toString();
    }
这个method会将非空的类会调用它的toString方法。
所以,可以清楚看出 print(Object o)
会调用toString()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值