Java 深究字符串String类(2)之重写toString()方法无意识递归

Java中每个类都是Object的子类,Object 有toString方法,所以标准容器自然都有
如果希望toString方法以打印对象内存地址,可以直接打印

    public static void main(String[] args) {
        Two t = new Two();
        System.out.println(t);
    }

输出:
Two@610455d6
好着呢,,但如果,想在那一串之前打印点什么.
可以重写toString方法


@Override
public String toString() {
    return String.format("adress : %s", this);    
}

public static void main(String[] args) {
    Two t = new Two();
    System.out.println(t);
}

这样写好像对着呢
预计输出为:
adress : Two@610455d6

但运行时发现,抛了很多很多异常
原因如下:

return String.format("adress : %s", this);    
                                //相当于↓
return String.format("adress : %s", this.toString);    

然后调用的toString是重载过的,即自身,而至于无限递归.

如果实在想在这打印地址,正确方法如下:

public static void main(String[] args) {
    Two t = new Two();
    System.out.println(t);
}



@Override
public String toString() {
    return String.format("adress : %s", super.toString());
}

去调用父类的toString~

输出:
adress : Two@610455d6

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值