当前位置: 代码迷 >> J2SE >> toString方法为什么出现栈溢出,请达人解释一下,越清楚详细彻底越好。多谢
  详细解决方案

toString方法为什么出现栈溢出,请达人解释一下,越清楚详细彻底越好。多谢

热度:107   发布时间:2016-04-24 13:05:55.0
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; }
  相关解决方案