如題,假如java類裡的成員變量是自身的對象,則建立該類對象時記憶體中怎麼配置設定空間,我感覺似乎死循環了。
不過我想的肯定是錯的,因為很多類的成員變量是自身對象,并且絕對無錯,舉個例子:
Class A{
private String b ="Hello";
private A a = new A();
}
Class B{
public static void main(){
A p = new
1.程式運作的時候會産生一個棧溢出錯誤的異常
Exception in thread “main” java.lang.StackOverflowError
你的思路是對的,在main方法中創一個A對象,而A對象在初始化自己成員的時候,又會創另一個A對象,進而造成死循環,最終導至記憶體溢出。
你的A類如下:
Class A{
private String b ="Hello";
private A a = new
通常程式不會像你這樣寫,而是
Class A{
private String b ="Hello";
private A a; //= new A();
public anymothod(...){
//在某條件滿足時
a=new
也就是說類是自身成員的時候,通常不能初始化,而僅僅是一個定義,在滿足某些條件的時候,才去初始化,否則必然導至記憶體溢出。
2.可以給靜态的自身對象指派,如
Class A{
private String b ="Hello";
private static final A a = new