您的位置:首页 > 编程语言 > Java开发

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

2016-11-07 19:56 393 查看
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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java string
相关文章推荐