Объектно-ориентированное программирование на Java. Платформа Java SE. Тимур Машнин. Читать онлайн. Newlib. NEWLIB.NET

Автор: Тимур Машнин
Издательство: Издательские решения
Серия:
Жанр произведения: Компьютеры: прочее
Год издания: 0
isbn: 9785005039606
Скачать книгу
эти два типа переменных в своей собственной памяти.

      Потому что это оказывает огромное влияние на то, как вы их программируете.

      Представим себе, что это память компьютера.

      На самом деле это похоже на то, как выглядит память компьютера.

      Это общая сетка с адресами для каждого отдельного местоположения, очень похожая на массив.

      Когда вы создаете новую переменную примитивного типа, компьютер занимает одно место в памяти и просто помещает эту информацию прямо там, имя и значение переменной.

      Когда вы создаете новый объект, он является динамическим.

      Он может расти и сокращаться, он может быть большим.

      Поэтому компьютер должен придумать особый способ поддерживать этот объект в собственной памяти.

      Поэтому, при создании, например, нового массива, компьютер сначала находит место в своей памяти для хранения адреса, где он будет хранить этот массив.

      И затем он занимает целую секцию памяти для какого-либо большого объекта.

      И, теперь у нас есть массив, находящийся в памяти, где одна из ячеек хранит адрес, где находятся реальные данные.

      Это и есть ссылка.

      Таким образом существует большое различие между примитивами и объектами.

      Примитивы хранятся непосредственно в памяти, как только вы создаете примитив.

      Они настолько малы, что это имеет смысл.

      Когда вы копируете переменную примитивного типа и меняете ее значение, первоначальное значение никак не меняется.

      Между ними нет реальной связи.

      Это будут две совершенно разные переменные.

      Как вы можете себе представить, объекты функционируют по-другому.

      Вместо того, чтобы выделять пространство для фактического значения, объекты занимают пространство в памяти для ссылки на место, где хранится информация объекта.

      Поэтому, если я создаю новый массив, а затем создаю другой массив, и устанавливаю его равным первому массиву, что копируется?

      Компьютер копирует ссылку.

      Теперь у меня есть две переменные, которые указывают на одну и ту же информацию.

      Поэтому, если я что-то изменяю в массиве z, изменится и массив y, и наоборот.

      Вы просто скопировали адрес, где находится информация.

      Поэтому, если я создам объект и передам его как параметр в метод, я передам ссылку или адрес.

      И любые изменения, которые я сделаю в этом методе с объектом, будут отражены в первоначальном объекте.

      Мне даже не нужно возвращать его в методе.

      Как было сказано ранее, массивы – это объекты. Однако, у них нет полезных методов внутри объекта Array.

      Для этого в Java есть класс Arrays,

      который содержит набор статических вспомогательных методов для работы с числами, схожих с тем, как в классе Math есть набор статических вспомогательных методов для работы с числами.

      Вот несколько популярных методов из класса Arrays.

      Метод toString