2017-08-03 120 views
1

在下面的程序中,我在Book類成員字段中實例化了一個Store對象。該命令是在堆中的每個Book類對象空間內分配內存還是在堆的空閒區域分配內存並將地址分配給它?在其他實例的字段中實例化一個對象

public class Book{ 

private String bookName; 
private Store count = new Store(10); 



public Book(String bookName) { 
    this.bookName = bookName; 
} 


public void display(){ 

    System.out.println(this.bookName); 
} 


public static void main(String[] args) { 

    Book main = new Book("Machines");  
    main.display(); 
    System.out.println(main.count.bookCount); 
} 

}

+0

對象沒有內存分配。 – Guy

+0

更正了句子 – suriyan

+0

爲每本書新增了「Store」對象。 – user2357112

回答

0

由於圖書類的每個實例都包含自己的存儲類,這個分配內存,每個實例,而不是作爲一個堆。如果要使用相同的存儲實例爲每本書例如,你必須通過存儲實例到Book類的構造函數這樣

public class Book{ 

private String bookName; 
private Store count; 



public Book(String bookName, Store count) { 
    this.bookName = bookName; 
    this.count = count; 
} 
0

Store是引用類型。當你實例化一個引用類型時,一部分未使用的堆被分配來存儲實際的實例。然後,將會有一個「參考」存儲在你現在的任何地方。該引用「指向」存儲實際對象的位置。

因此,

實際Store對象存儲在別處,而不是Book實例內。在書實例中,值更改爲存儲對象的內存地址。