Является ли массив в Java примитивным типом данных?

«Является ли массив в Java примитивным типом данных?» — вопрос из категории Java Core, который задают на 10% собеседований Java Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Нет. Массив — это ссылочный тип (reference type), а не примитивный. В Java существует четкое разделение:

  • Примитивные типы (8 штук): boolean, byte, char, short, int, long, float, double. Они хранят значения непосредственно в переменной.
  • Ссылочные типы: Классы, интерфейсы, перечисления, аннотации и массивы. Переменная ссылочного типа хранит адрес объекта в куче (heap).

Ключевые отличия массива от примитива:

// ПРИМИТИВ: переменная 'x' хранит само значение 10
int x = 10;

// МАССИВ (ссылочный тип): переменная 'arr' хранит ссылку на объект-массив
int[] arr = new int[5];
arr[0] = 10;

// 1. Создание через 'new' (как объект)
double[] prices = new double[10];

// 2. Наследование от Object
System.out.println(arr instanceof Object); // true

// 3. Значение по умолчанию
int[] newArr = new int[3];
System.out.println(newArr[0]); // 0 (для примитивов)
String[] newStrArr = new String[2];
System.out.println(newStrArr[0]); // null (для объектов)

Почему это важно:

  • Массивы передаются в методы по ссылке (изменения внутри метода влияют на оригинальный массив).
  • Массивы могут быть null.
  • Для сравнения массивов по содержимому используйте Arrays.equals(), а не оператор == (который сравнивает ссылки).