toString方法为什么出现栈溢出,请达人解释一下,越清楚详细彻底越好。谢谢!
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;
}