Как объявить и инициализировать массив в Java?
Объявление массива: два равноправных синтаксиса
В Java массив — это объект, который хранит фиксированное количество элементов одного типа. Объявить переменную массива можно двумя способами:
int[] numbers; // Рекомендуемый стиль (Java-конвенция)
int numbers[]; // Допустимый, но устаревший стиль (из C/C++)
Разницы в работе нет — оба варианта создают переменную, которая может ссылаться на массив целых чисел. Однако рекомендуется использовать тип[] имя, так как это читается как "массив целых чисел", а не "целое число с массивом".
Инициализация массива через new
После объявления переменной нужно создать сам массив (объект) в памяти. Для этого используется оператор new:
int[] numbers = new int[5]; // Массив из 5 элементов, все по умолчанию равны 0
После этой строки создан массив, но все его элементы равны нулю (для int), null (для объектов) или false (для boolean). Заполнить значениями можно по индексам:
numbers[0] = 10;
numbers[1] = 20;
numbers[2] = 30;
numbers[3] = 40;
numbers[4] = 50;
Сокращенная инициализация с фигурными скобками
Если вы знаете значения элементов заранее, можно объявить и инициализировать массив одной строкой:
int[] numbers = {10, 20, 30, 40, 50}; // Длина массива определяется автоматически (5 элементов)
Важно: такой синтаксис работает только в момент объявления. Если переменная уже объявлена, использовать его нельзя:
int[] numbers;
numbers = {10, 20, 30}; // Ошибка компиляции!
В этом случае нужно использовать new с фигурными скобками:
int[] numbers;
numbers = new int[]{10, 20, 30}; // Правильно
Почему ваш четвёртый пример не работает
Код int numbers = {1, 2, 3}; ошибочен, потому что:
- Вы объявляете
int numbers— это обычная целочисленная переменная, а не массив. - Фигурные скобки
{1, 2, 3}— это синтаксис для массивов, а не для одиночных чисел.
Правильно было бы:
int[] numbers = {1, 2, 3};
Полные примеры для всех случаев
// Способ 1: объявление + new + поэлементное заполнение
int[] arr1 = new int[3];
arr1[0] = 5;
arr1[1] = 10;
arr1[2] = 15;
// Способ 2: объявление + сокращенная инициализация
int[] arr2 = {5, 10, 15};
// Способ 3: объявление + new с фигурными скобками (полезно для переприсваивания)
int[] arr3;
arr3 = new int[]{5, 10, 15};
// Способ 4: массив объектов
String[] names = {"Alice", "Bob", "Charlie"};
// Способ 5: многомерный массив
int[][] matrix = {{1, 2}, {3, 4}, {5, 6}};
Ключевые моменты для новичка
- Всегда используйте
тип[] имядля объявления. - Размер массива фиксирован — после создания его нельзя изменить.
- Индексы начинаются с 0:
array[0]— первый элемент,array[length-1]— последний. - Длину массива можно получить через
array.length(это свойство, не метод). - Если вы попытаетесь обратиться к индексу за пределами длины, получите
ArrayIndexOutOfBoundsException.
Теперь вы знаете все основные способы. Практикуйтесь — и массивы станут вашим надёжным инструментом!
<<Альтернативный взгляд: массивы как объекты и их связь с коллекциями
Первый ответ отлично объяснил синтаксис. Добавлю важный контекст: в Java массив — это объект, а не просто набор значений. Это объясняет, почему нужен new и почему переменная массива — это ссылка.
Что это даёт на практике?
- Массивы можно передавать в методы и изменять внутри них (так как передаётся ссылка).
- Массивы имеют методы
clone()иtoString()(ноtoString()выводит не содержимое, а адрес — используйтеArrays.toString()). - Массивы можно сравнивать через
Arrays.equals(), а не через==(который сравнивает ссылки).
Когда использовать массивы, а когда — коллекции?
Массивы хороши, когда:
- Размер известен и фиксирован заранее.
- Нужна максимальная производительность (массивы быстрее
ArrayList). - Вы работаете с примитивными типами (
int[],double[]) — коллекции не поддерживают примитивы напрямую.
Если размер может меняться, используйте ArrayList:
ArrayList<Integer> list = new ArrayList<>();
list.add(10);
list.add(20);
// list.size() — текущее количество элементов
Полезный трюк: анонимный массив
Можно создать массив без присвоения переменной:
// Передача массива прямо в метод
printArray(new int[]{1, 2, 3});
// Или использование в выражении
int sum = java.util.Arrays.stream(new int[]{4, 5, 6}).sum();
Это удобно, когда массив нужен только для одного вызова.
Главный совет: начните с простого синтаксиса int[] arr = {1, 2, 3}; для известных данных и int[] arr = new int[n]; для динамических. Со временем вы привыкнете и к другим вариантам.
Ответов пока нет.
Войдите чтобы оставить ответ