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" 为什么呢?在线听听你们的建解!
public String toString() {
return "address:" + this;
} public static void main(String[] args) {
System.out.println(new ToString());
}
}运行该程序的时候,控制台提示:java.lang.StackOverflowError Exception in thread "main" 为什么呢?在线听听你们的建解!
解决方案 »
- 已知类型,怎样构造对象?
- 高分请教,dom4j读取内容乱码问题
- 类型匹配错误~~~~~~
- 请问,怎么样才能做到不准出现阿拉伯数字
- 关于JAVA中的图形问题?图形高手请进!
- JB使用一问
- 关于String类的split方法
- tomcat运行中的一个百思不得其解的现象????
- 请问java.lang.System是一个类吧??那么System.out.print()中的out充当什么角色呢?还是类???
- 有一个问题请问怎么解决:Could not initialize class org.apache.http.conn.ssl.SSLConnectionSoc
- 关于图象图标的显示问题
- eclispe怎么改变字体的大小
public String toString() {
return "address:" + this;
}当你要println一个对象的时候,不管是否显示的调用toString()方法,都会自动的调用其toString()方法。
关键的问题就在于this的使用,这里因为将this对象与一个字符串相加,导致会自动调用其自身的toString()方法,而这样一来就相当于一个无限次的递归调用,最终导致了StacOverFlow
估计是你理解错了,这么说也是在这个语境中说的,就是因为出现了一个字符串加法所以就出现调用toString的情况,省略了而已
public class ToString { public String toString() {
return "address:" + this; //当见到this,但前面有个+符号的时候,自动会调用其toString方法,这样就无穷循环了!
} public static void main(String[] args) {
System.out.println(new ToString()); //调用其toString方法
}
}