Java中toString()用法

首先来看看在类Object中toString()方法的定义:

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

从定义中可以看出,Object对toString的实现是将调用toString()方法的类的名字(什么名字?后面会说)和类的hashCode的十六进制通过一个 @ 符号连接起来的。

其中的getClass()方法,解释如下:

/**
Returns the runtime class of this {@code Object}. The returned
     * {@code Class} object is the object that is locked by {@code
     * static synchronized} methods of the represented class.
*/

即:这里取得的是类的运行时名字——定义的类的名字。

所以常常会在执行 System.out.println(一个类对象实例)的时候得到类似 XXX@702d2da4 的结果。

这里定义一个类:

public class Person() {
    private String name;
    private int age;
    private String address;
    // ... setters & getters
}

如果此时使用System.out.println(new Person())方法,会得到如上所述的一个串;但是这往往不是我们所期望的结果。

比如,从常规上来说,我们想要知道一个人的信息,最基本的就是这个人的名字。

那么,我们可以实现toString()方法如下:

    @Override
    public String toString() {
        return name;
    }

如果想知道更多的信息,比如还想知道年龄,可以实现toString()方法如下:

 @Override
    public String toString() {
        return "姓名:" + name + ", 年龄:" + age;
    }

 

由此,在必要时通过重写(Override)Object类的toString()方法,以企图让JVM在我们直接输出我们需要得到的对象实例(如:System.out.println(new Person())的信息。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值