public class B {
public static void main(String[] args) {
A a = new A();
}
}
public class A {
A b = new A();
}
-3
A
回答
1
因爲每個A
都會創建一個名爲b
的內部字段,其類型爲A
。這是無限的recurisve,因爲要創建一個b
您還必須創建一個A
(它增加了另一個b
)。因爲初始值設定項被複制到默認的構造函數中,所以您的示例相當於類似的東西,
public class A {
// A b=new A();
A b;
public A() {
super();
b = new A();
}
}
+0
謝謝@Elliott Frisch的詳細解答。 –
0
我不理解您的要求。爲什麼你在同一個類中聲明瞭實例變量。它將表現得像一個遞歸循環。從主要方法中,它將嘗試創建類A的對象,並在該對象創建期間嘗試初始化變量「a」。結果它又會創建A的另一個實例等等。
相關問題
- 1. 爲什麼在下面的程序中會發生溢出?
- 2. 爲什麼會拋出StackOverflowError?
- 3. 這個錯誤是什麼,爲什麼會發生?下面
- 4. 當我設置._visible場景背後會發生什麼=假
- 5. 什麼是Java中的StackOverflowError?什麼時候發生?
- 6. Servlet 3.0和Comet/long-polling:在這些特定場景中會發生什麼?
- 7. 當場景中的物體超出近平面和遠平面之間的範圍時會發生什麼?
- 8. 如何確定.Net中的場景背後發生了什麼
- 9. 這是爲什麼產生一個StackOverflowError
- 10. 爲什麼會發生? java
- 11. 爲什麼表格在以下場景中分散注意力?
- 12. 在「@include(或import)」和「:(inheritance」)之間使用場景後會發生什麼?
- 13. 改變場景(JavaFX)時,爲什麼我的場景不會彈出?
- 14. 兩個場館合併後舊Foursquare場地會發生什麼?
- 15. 爲什麼場景將場景管理器作爲參數?
- 16. 爲什麼在這裏會發生ArrayIndexOutOfBoundsException?
- 17. 爲什麼 '分段故障' 發生在下面的C代碼
- 18. 重倉股場景(發生了什麼事我的符號?)
- 19. 當我運行下面的命令時會發生什麼?
- 20. 在UNIX shell中運行exec csh會發生什麼?爲什麼?
- 21. System.Data.SqlClient.SqlTransaction.Dispose中會發生什麼?
- 22. 什麼是場景?
- 23. 會發生什麼?
- 24. 會發生什麼?
- 25. 會發生什麼?
- 26. 會發生什麼?
- 27. 會發生什麼?
- 28. 會發生什麼?
- 29. 爲什麼我會在這方面發生分割錯誤?
- 30. 爲什麼在這種情況下填充不會發生?
你爲什麼認爲它不應該?什麼初始化'A'實例呢? –
由於無限循環 –
它在堆內存中創建一個新對象'a',然後創建一個對象'b'。我無法理解爲什麼這些會導致堆棧溢出 –