toString()方法那些你可能不知道的知识

toString方法

不知道各位有没有试过System.out.println(引用);,对于这个语句的输出各位有没有觉得很奇怪,一堆噼里啪啦的看不懂的东西,但是居然没报错,欸嘿,下面带你了解了解 ^-^

//源码
/*
	public String toString(){
		return this.getClass().getName() + '@' + Integer.toHexString(hashCode());
	}
	
	用法:引用.toString()
	作用:返回一个字符串,字符串内容为:类名@对象的内存地址的十六进制的表达形式
*/

//下面是一个java文件,可自行测试
public class test {
    public static void main(String[] args) {
        A a = new A();
        a.toString();
    }
}
class A{
    
}
//运行结果为 A@0x.... 省略号部分为内存地址

​ 乍一看这个方法好像很没用的样子,返回类名@加内存地址对我们敲代码有什么用呢?但是,but,我们应该知道有方法重写这种东西吧?子类继承父类,那么在子类中可以重写父类的方法让其实现新的功能,来,我们对上面的代码稍加修改:

public class test {
    public static void main(String[] args) {
        A a = new A();
        a.toString();
    }
}
class A{
    int year;
    int month;
    
    public String toString() {
        return "A{" +
                "year=" + year +
                ", month=" + month +
                '}';
    }
}

//此时这个程序的运行结果变成了A{year = 0,month = 0},都是0是因为我没有对a的属性进行赋值,int类型的变量默认值为0

​ 这么一看来好像还是没什么用,但是好在这个方法在 IDEA 里面可以自己生成,上面的那个重写的方法就是我用 IDEA 自己生成的,欸嘿,所以只要改好数据我们就可以输出我们想要输出的东西了,比如return this.year + "年" + this.month + "月";,这样子我们创建的对象再调用这个方法的时候就会输出你想要查看的属性了!

​ 关于toString()方法,以后所有的类都建议重写该方法!!!

​ 原因回到开头的那个问题System.out.println(引用);当输出语句的对象是一个引用时,编译器不会报错,而是会默认的调用该对象的toString()方法,而如果不重写的话,就会出现开头所说看不懂运行结果的小问题。欸嘿,有用但不完全有有用的知识增加了^-^

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值