多个指向同一对象的引用变量是否占用与该对象相同的内存占用

时间:2018-11-30 19:46:14

标签: java object reference-type

例如,我有四个班级A,B,C和D; D的构造函数将A,B和C作为参数。如果我具有以下实现方式:

public static main(String[] args) {
  A = new A();
  B = new B();
  C = new C();
  D = new D(A, B, C);
}

D的实例变量为:

  private A objA;
  private B objB;
  private C objC;

例如,将D实例化后,将A(新A())的“值”复制到objA吗?

1 个答案:

答案 0 :(得分:1)

Java仅具有引用和原始类型。当您为变量分配引用时,无论引用什么对象,它始终占用相同的内存空间。通常,引用是4个字节,但对于超过32 GB的大型堆,引用可以是8个字节。

  

例如,将D实例化后,将A(新A())的“值”复制到objA吗?

在这种情况下,A的值是对对象的引用,并且该引用被复制。引用的对象未被触摸(复制或读取)