2021-04-26

本文详细介绍了Java中toString()方法的作用,该方法默认返回对象的类名和哈希码,但通常需要在子类中重写以提供更有意义的信息。通过示例代码展示了如何覆写toString()方法以输出对象的属性值,从而在打印对象时提供更直观的输出。总结强调了覆写toString()方法的重要性,以便在输出对象时能获取到有用的信息。
摘要由CSDN通过智能技术生成

toString方法见解#

方法简介

toString()方法其实是最高类Object类中的一种方法,在JDK API文档中的描述是这样的:


toString

public String toString()

返回该对象的字符串表示。通常,toString 方法会返回一个“以文本方式表示”此对象的字符串。结果应是一个简明但易于读懂的信息表达式。建议所有子类都重写此方法。

getClass().getName() + '@' + Integer.toHexString(hashCode())
 
  • 返回:

    该对象的字符串表示形式。

    下面来通过代码体现它的作用,以及我们应该如何合理的理由它:


代码:

父类程序

package StudyNew.TRY;

public class TOString {
    private String name;   // 创建私有化成员变量
    private int age;

    public TOString() {   //构建空参
    }

    public TOString(String name, int age) { //构建全参
        this.name = name;
        this.age = age;
    }
 //写上getter setter方法:
    public String getName() { 
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public String toString(){         //覆写Object类中的.toString方法
        return this.name
            +this.age;
    }
}

实现类程序

package StudyNew.TRY;

public class TOStringSHIXIAN {
    public static void main(String[] args) {
        TOString TO=new TOString("HSL",20);  //创建对象
        
        System.out.println(TO.toString);//重点在此
    }
}

单独刨析:

输出处不写.toString

假如我们不在父类中覆写toString方法: .toString

直接在实现类中打印输出父类的类名,那将会出现以下结果:

package StudyNew.TRY;

public class TOStringSHIXIAN {
    public static void main(String[] args) {
        TOString TO=new TOString("HSL",20);  //创建对象
        
        System.out.println(TO);//直接输出对象
        
    }
}

运行结果:

StudyNew.TRY.TOString@75412c2f

可以看到,实际上输出的是类的地址和其对应的哈希地址值

假如对实现类的程序稍作改动:

输出处写上.toString

package StudyNew.TRY;

public class TOStringSHIXIAN {
    public static void main(String[] args) {
        TOString TO=new TOString("HSL",20);  //创建对象
        
        System.out.println(TO.toString);//改动处,在实例化对象后面写上toString()方法,直接调用
    }
}

运行结果:

StudyNew.TRY.TOString@50cbc42f

与之前的输出一样

也就是说这两者事实上调用的是同一个方法,不管在实例化对象后面写不写.toString,最终调用的都是它

那么它是从哪来的呢?


覆写代码分析:

实际上在前面已经说过,他就是最高类Object类当中的一个方法,在实现类输出处写上父类名称时,不管在后面加不加.toString,效果都一样

但是,它输出的文件地址值和哈希地址值对我们貌似没有任何用处

所有我们利用此特性就可以通过.toString()取得一些对象的信息,此时,就需要对他进行覆写

代码:

 public String toString(){
       return "我叫"+this.name+
                "我今年"+this.age+"岁了";
    }                      //只需要在父类中加上对其覆写的方法,那么在调用时就会用我们自定义的覆写方法

以上代码的运行结果:

  //我叫HSL我今年20岁了

总结

程序TOString类覆写了Object类中toString()方法,这样直接输出对象时调用的就是被TOString类覆写过的toString()方法了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值