class ABC {
int x;
static ABC y = new ABC();
}
public class XYZ {
public static void main(String[] args) {
ABC q = new ABC();
q.x = 5;
System.out.println(q.x);
}
}
有人可以解釋代碼運行時發生的一切(一步一步)嗎?擁有自己類型的靜態成員的類
此外,當static
關鍵字被刪除之前,實例y
,StackOverflow發生錯誤。爲什麼在static
關鍵字存在時不會發生這種情況?
在此先感謝。
是你的家庭作業,你不明白這個代碼準確嗎? –
如果你刪除了'static',那麼每個'ABC'實例都有它自己的'y'字段,這意味着對於每個創建的ABC實例,''y'值需要一個新的'ABC'實例,所以它會創建一個新的'ABC'實例,它需要一個新的'y'值,因此它會創建一個新的'ABC'實例,它需要一個新的'y'值,因此它會創建一個新的ABC實例,新的'y'值,所以它創建一個新的ABC實例,它需要一個新的'y'值,所以它創建一個新的ABC實例,它需要一個新的'y'值,StackOverflowError! – Andreas
這就像試圖不正確地使用SingleTon模式:p – WilomGfx