АК
Арина Кривошеина

Почему размер массива жестко устанавливается при инициализации?

В большинстве других языков такой дичи нет.
Поэтому массивы Java в принципе бесполезны. Уж лучше вместо них коллекциями пользоваться.

ДД
Дмитрий Данилов

> В большинстве других языков такой дичи нет

Неправда.
Практически во всех известных мне (C++, Python и Rust, например) есть массивы фиксированной длины в некотором виде. Их значительно проще реализовывать, чем динамические структуры данных, и издержки при их использовании минимальны. Если у тебя пока не было задачи, в которых статический массив был бы не хуже динамического, это ещё не значит, что таких задач не существует в природе.

ДМ
Денис Медведев

Вообще-то, в практически любом компилируемом языке размер массива устанавливается при его создании и дальше не меняется - на то он и массив. Это в динамических языках над массивами поиздевались - позволяя менять их размер.

С другой стороны, в Java размер массива в момент создания задаётся не константой, а произвольным целочисленным выражением:

Scanner in = new Scanner(System.in);
int a[] = new int[in.nextInt()];

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

ИК
Ирина Климова

во всех языках так. не ври

ЧО
Чёрный Обелиск

Массивы менее популярны в Java скорее всего потому, что в реальных задачах тебе еще надо будет иметь возможность преобразовывать данные, что крайне удобно делать через стримы. Ну наверное это как минимум одна из причин. Поэтому проще всегда и везде получать и возвращать коллекции, нежели заниматься перегонкой массива в стрим/коллекцию и обратно. Особенно массивы примитивов - это вообще ад. Ну и конечно в них можно не определять изначальный размер, что тоже достаточно удобно.

Григорий Левкин
Григорий Левкин

Я тебе даже больше скажу. Массивов на самом деле не существует! Компилятор подставляет системные запросы на выделение памяти (например, malloc).

Похожие вопросы
Инициализация жесткого диска удалит данные с него?
Инициализация жесткого диска, телевизор lg
C++ Инициализация массива в функции...
Как задать размер массива и максимальный размер элемента?
Инициализация массива указателей на объекты.
Удалить из массива отрицательные элементы
Сортировка массива на Java, нужно было написать сортировку "пузырьком". Вот настрадал немного кода.
НУЖНА ПОМОЩЬ!!! В ПАСКАЛЕ С ПОСТРОЕНИЕМ СТОЛБЧАТОЙ ДИАГАРАММЫ! С ПОМОЩЬЮ МАССИВА! помогите!
Задать размеры переменной
Java, где разместить инициализацию переменной в этом методе?