2012-01-31 36 views

回答

10

這是完全一樣的任何其他功能無條件地完全一樣的參數自稱:

public void f() { 
    f(); // <---- will cause a stack overflow due to infinite recursion 
} 

功能只是不斷自稱,並且每次調用需要的堆棧空間。遲早堆棧會耗盡,你會得到一個異常。

A()不斷調用自身(new A())時,會發生完全相同的事情。

5

因爲您的new A()語句將調用A類的構造函數,該類將調用A類的構造函數,依此類推。這創建了一個無限遞歸。這會導致JVM拋出StackOverflowError

相關問題