Делают ли несколько ссылочных переменных, указывающих на один и тот же объект, каждую из них занимают такой же объем памяти, что и объект - PullRequest
0 голосов
/ 30 ноября 2018

Скажем, например, у меня есть четыре класса 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;

Будет, например, "значение" A (new A ())быть скопирован в objA после создания экземпляра D?

1 Ответ

0 голосов
/ 30 ноября 2018

Java имеет только ссылки и примитивные типы.Когда вы назначаете ссылку на переменную, она всегда занимает одинаковое количество памяти, независимо от того, на какой объект она ссылается.Обычно ссылка составляет 4 байта, но может быть 8 байтов для больших куч размером более 32 ГБ.

Будет, например, "значение" A (new A ()) скопировано в objAпосле создания экземпляра D?

В этом случае значение A является ссылкой на объект, и эта ссылка копируется.Указанный объект не касается (не копируется и не читается)

...