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

标签 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 的“值”(new A())是否会被复制到 objA?

最佳答案

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

Will, for instance, the "value" of A (new A()) be copied to objA after D's instantiation?

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

关于java - 指向同一对象的多个引用变量是否都占用与该对象相同的内存占用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53563950/

相关文章:

java - DatePicker 显示从 0 开始的月份值

java - 使用查找调用以增量模式加载智能字段

Java:条件语句和关系运算符

.net - 在哪里知道/检查: Int32 inherits from ValueType, ValueType继承自Object?

java swing来计算所有控件的数量

swift - 在swift中使用类类型变量作为函数参数

ruby-on-rails - 避免加载关联关系对象

kotlin - Kotlin 数据类是值类型还是引用类型?

c# - 你能在结构中有一个类吗?

c# - 值类型如何/为什么可能从引用类型派生?