public class StaticTest {
public static void main(String[] args) {
String s=TestStaticString.s;
}
}
class TestStaticString{
String ss=new TestStaticString().sp("003");
static String s=new TestStaticString().sp("001");
static String S;
static{
S=new TestStaticString().sp("002");
}
String sp(String s){
System.out.println(s);
return s;
}
}那句003运行时出错了运行时报
Exception in thread "main" java.lang.StackOverflowError
at thinking_in_java_4_exercises.TestStaticString.<init>(StaticTest.java:10)
解决方案 »
- JCreator编译出错
- html中获取动态数据
- 编译期的Annotation
- 关于 Swing 中下拉菜单类和复选框??????????????在线等
- 请教java精神病医生程序
- ItemUnitList cannot be resolved to a type怎么解决了!请大牛指点!!
- 这些天遇到的几个小问题,大家帮忙一起解决了吧
- 500分求助,java做的折线图,柱型图,等图形!!!online
- JBuilder7速度为什么这么慢
- 在eclipse中创建jframe窗体在设计模式下感觉拖控件很难用啊,布局没法按自己的想法随意拖动,请各位给我点建议怎么做GUI编程
- java swing 如何实现屏幕四分屏,九分屏,十六分屏显示?
- 算法设计
public static void main(String[] args) {
String s=TestStaticString.s; //执行第1步
}
}
class TestStaticString{
String ss=new TestStaticString().sp("003");
static String s=new TestStaticString().sp("001");
//执行第2步,此时需要创建一个TestStaticString对象,其中static块会在对象创建时执行
static String S;
static{
S=new TestStaticString().sp("002"); //执行第3步,然后这个又会执行static块...然后一直在这一步循环了
}
String sp(String s){
System.out.println(s);
return s;
}
}
static块只会执行一次不会一直执行的好不
这句一直递归运行,无法结束.
ss 是个成员变量,在生成对象的时候要显示赋值。
在赋值时,需要"new"一个对象出来,而在"new"这个对象的时候,最后又要这了,又要"new"一个新的对象.....
最后堆栈溢出了。
解决这个问题用"this",当前对象。
String ss=this.sp("003");
对就是这个的问题,会不停的递归调用,
一般要new本对象都是回做成静态的
new自身的时候,再次调用new,无限new下去了