在其他实例的字段中实例化对象

时间:2017-08-03 04:44:48

标签: java

在下面的程序中,我在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);
}

}

2 个答案:

答案 0 :(得分:0)

Since each instance of the Book class contains their own Store class, this allocates memory for each instance rather than as one heap. If you want to use the same Store instance for every Book instance, you must pass the Store instance into the Book class in the constructor like this

  GmailApp.sendEmail(testEmail, subject,'sample body', {
    htmlBody: message
  });

答案 1 :(得分:0)

Store是参考类型。实例化引用类型时,将分配未使用堆的一部分来存储实际实例。然后,会有一个"参考"存储在您目前所在的任何地方。这个参考"点"到实际对象的存储位置。

因此,

实际的Store对象存储在其他位置,而不是Book实例中。在book实例中,值将更改为存储Store对象的内存地址。