Java 深究字符串String类(2)之重写toString()方法无意识递归
2016-11-07 19:56
393 查看
Java中每个类都是Object的子类,Object 有toString方法,所以标准容器自然都有
如果希望toString方法以打印对象内存地址,可以直接打印
输出:
Two@610455d6
好着呢,,但如果,想在那一串之前打印点什么.
可以重写toString方法
这样写好像对着呢
预计输出为:
adress : Two@610455d6
但运行时发现,抛了很多很多异常
原因如下:
然后调用的toString是重载过的,即自身,而至于无限递归.
如果实在想在这打印地址,正确方法如下:
去调用父类的toString~
输出:
adress : Two@610455d6
如果希望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类(3)format()静态方法
- 由Java中toString()方法引发的无意识的递归想到的
- java实体类重写toString方法,得到想要字符串
- 由Java中toString()方法引发的无意识的递归想到的
- Java中String类(字符串操作)的10个常见问题和解决方法
- 重写java类的toString()方法, 安卓开发
- 字符串与正则表达式1、字符串 String类对象是不可改变的,对于String对象的重新赋值在本质上是重新创建了一个String对象并将新值赋予该对象,其方法ToString对性能的提高并非很显著。
- java上机课代码。。。重写equals方法,toString方法。。。
- 【慕课笔记】第二章 认识JAVA中的字符串 第3节 JAVA中String类的常用方法(一)
- Java基本功练习十四(字符串和文本IO【文件读写数据、字符串生成器、String类方法、相关技巧】)
- 【原创】关于java对象需要重写equals方法,hashcode方法,toString方法 ,compareto()方法的说明
- Java仿照JavaScript的JSON的stringify()方法重写toString()方法的启示
- Java中String类(字符串操作)的10个常见问题和解决方法
- Java String类 字符串的一些常用方法 --获取
- java中Object类与string类及其字符串处理方法
- java equals() 和toString()方法重写
- java String类(字符串)的方法
- 巧用重写toString的方法,输出格式的问题留给java帮我解决吧~
- 【慕课笔记】第二章 认识JAVA中的字符串 第4节 JAVA中String类的常用方法(二)
- Java类中重写toString方法