level02.lecture02 Кто мне может объяснить что это значит? В чем отличие сложного(классового типа) от обычной переменной примитивного типа? Типы содержат в себе много маленьких (примитивных), то их объекты занимают много памяти. Больше, чем обычные переменные примитивных типов. Иногда намного больше. Присваивание таких переменных выполнялось очень долго и требовало копирования больших объёмов памяти. Поэтому переменные сложных типов хранят в себе не сам объект, а всего лишь ссылку на него! Т.е. четырёхбайтовый адрес. Этого хватает, чтобы можно было обращаться к данным этих объектов. Всю сложность, связанную с этим, берет на себя Java-машина. Как я это понимаю, точнее не понимаю. Вот смотрите, есть переменная примитивного типа она содержит определенное значение, а есть объект класса он тоже содержит определенные значения, группы значений, например:
class Example {
int a;
int b;
String c;
}
т.е. под эту группу значений отведено место в памяти компьютера, т.е. за конкретным значением закреплена группа ячеек памяти, таким образом объект состоит из этих самых групп ячеек памяти, то есть грубо говоря отличие примитивного типа от класса только в том, что примитивный тип имеет одну ячейку памяти, а объект имеет группу значений? и никакой экономии тут быть не может, потому что когда создается очередной объект сложного типа, то под него нужно опять же выделить группу значений(ячеек в памяти) и присвоить им уникальные адреса, вот хоть убей не понимаю. Вот как тут дальше в лекции пишут: — Но представь, что тебе надо сохранить в коробку (переменную) что-нибудь побольше. Например, собаку, машину или твоего соседа Васю. Чтобы не пихать в коробку невпихиваемое, можно поступить проще: вместо собаки взять ее фото, вместо машины – ее номер, вместо Васи – его номер телефона. — Вот мы берем лист бумаги и пишем на нем телефонный номер Васи. Это и будет аналогом ссылки на объект. Если мы достанем из коробки лист с номером Васи, отксерим его и положим в несколько коробок, то количество ссылок на Васю увеличится, но Вася как был один, так и остался. Что, в общем-то, логично. — Особенность такого хранения данных в том, что ссылок может быть много, а объект – один. Это все понятно, но объект же должен существовать, как и примитив должен существовать, тогда не понимаю смысл этой фразы : переменные сложных типов хранят в себе не сам объект, а всего лишь ссылку на него! В чем отличие от примитива, если и та и та переменные должны существовать?