首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2SE开发 >

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

2012-03-27 
toString方法为什么出现栈溢出,请达人解释一下,越清楚详细彻底越好。谢谢!public class ToString {public S

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

热点排行