Ответ
Массив в Java — это объект, размещаемый в куче (heap). Переменная массива хранит не сами данные, а ссылку (указатель) на область памяти, где эти данные расположены.
Ключевые следствия ссылочной природы:
- Передача по ссылке: При присваивании или передаче в метод копируется только ссылка, а не содержимое массива.
int[] original = {1, 2, 3}; int[] alias = original; // alias и original ссылаются на один массив alias[0] = 99; System.out.println(original[0]); // 99 — изменение видно через обе переменные - Сравнение ссылок: Оператор
==сравнивает адреса в памяти, а не содержимое.int[] a = {1, 2}; int[] b = {1, 2}; System.out.println(a == b); // false — разные объекты в куче System.out.println(Arrays.equals(a, b)); // true — сравнение по содержимому - Значение
null: Переменная массива может не ссылаться ни на какой объект.int[] empty = null; // empty[0] = 5; // NullPointerException
Почему так реализовано? Это позволяет эффективно работать с большими массивами (избегать копирования при передаче) и единообразно управлять памятью для всех объектов.