日期:2014-05-20  浏览次数:20792 次

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; 
}