2015-11-29 142 views
1

爲什麼這段代碼不能正常執行。它拋出java.lang.StackOverflowError。我想知道這個班的行爲。爲什麼這段代碼拋出java.lang.StackOverflowError

public class A { 
A a = new A(); 
public static void main(String[] args) { 
    A a = new A(); 
    System.out.println("i'm done!"); 
}} 
+0

http://stackoverflow.com/questions/214741/what-is-a-stackoverflowerror –

+1

你應該學會使用調試器,然後你會看到明顯的問題。 –

回答

3

你創建變量Aa一個實例,並用每次調用構造函數初始化。所以它繼續像一個無限循環

0

你面臨的問題是,你在第二行用默認/空構造函數重新聲明類,導致無限循環,從而導致StackOverflowError。

刪除匹配:

public class A { 
public static void main(String[] args) { 
    A a = new A(); 
    System.out.println("i'm done!"); 
}} 
相關問題