public class ToString {
public String toString() {
return "address:" + this;
}
public static void main(String[] args) {
System.out.println(new ToString());
}
}
运行该程序的时候,控制台提示:java.lang.StackOverflowError Exception in thread "main"
为什么呢?在线听听你们的建解!
------解决方案--------------------
这个非常简单,你System.out.println(new ToString()) 方法会调用 ToString的toString()方法,而ToString()方法里面的字符串加法中this关键字也是一个ToString,它也会调用自己的ToString()方法,如果就会出现一个无限递归的现象,而递归我们知道结果都是在堆栈当中,这样无限递归下去,肯定会StackOverflowError 了
------解决方案--------------------
- Java code
public String toString() { return "address:" + this; }