当前位置: 代码迷 >> J2SE >> 高手帮忙解释下解决办法
  详细解决方案

高手帮忙解释下解决办法

热度:9   发布时间:2016-04-24 01:07:25.0
高手帮忙解释下
Java code
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)

------解决方案--------------------
无限循环了吧。。。
Java code
public class StaticTest {    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;    }}
------解决方案--------------------
探讨
无限循环了吧。。。

Java code


public class StaticTest {
public static void main(String[] args) {
String s=TestStaticString.s; //执行第1步
}
}
class TestStaticString{
String ss=ne……

------解决方案--------------------
Java code
    String ss=new TestStaticString().sp("003");
------解决方案--------------------
"最后又要这了" 应是"最后又要执行到这了"
------解决方案--------------------
String ss=new TestStaticString().sp("003");
对就是这个的问题,会不停的递归调用,
一般要new本对象都是回做成静态的
------解决方案--------------------
自身归递问题
new自身的时候,再次调用new,无限new下去了
  相关解决方案