高手帮忙解释下
- 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
String ss=new TestStaticString().sp("003");
[解决办法]
"最后又要这了" 应是"最后又要执行到这了"
[解决办法]
String ss=new TestStaticString().sp("003");
对就是这个的问题,会不停的递归调用,
一般要new本对象都是回做成静态的
[解决办法]
自身归递问题
new自身的时候,再次调用new,无限new下去了