Ядровые массивы по определению имеют фиксированный размер. Если вам нужен автоматический рост, вы используете классы XXXList.
EDIT - вопрос был выяснен немного
Когда я первым начинаю изучать Java (идущий от C и C++ фона), это, вероятно, одна из первых вещей, которые споткнулись меня. Надеюсь, я смогу пролить свет.
В отличие от C++, массивы объектов в Java do не объекты магазина. Они хранят ссылки на объекты.
В C++, если вы объявили что-то подобное:
String myStrings[10];
Вы получили бы 10 объектов String. На данный момент было бы совершенно законно делать что-то вроде println (myStrings [5] .length); - вы получили бы «0» - конструктор по умолчанию для String создает пустую строку с длиной 0.
В Java, когда вы строите новый массив, вы получаете пустой контейнер, который может содержать 10 ссылок на String. Поэтому вызов:
String[] myStrings = new String[10];
println(myStringsp[5].length);
будет бросать исключения нулевого указателя, потому что вы на самом деле не поместил ссылку типа String в массив еще.
Если вы исходите из фона C++, подумайте о новой String [10] как эквивалентной новой (String *) [10] из C++.
Таким образом, с учетом этого, она должна быть достаточно ясно, почему ArrayList является решением для автоматического расширяющегося массива объектов (а на самом деле, ArrayList реализуются с помощью простых массивов, с помощью алгоритма роста, построенного в этом Распределяет новые расширенные массивы по мере необходимости и копирует содержимое из старого в новое).
На практике существует относительно мало ситуаций, когда мы используем массивы. Если вы пишете контейнер (что-то похожее на ArrayList или BTree), то они полезны или если вы делаете много манипуляций с байтом низкого уровня, но на уровне, который происходит в большинстве случаев, используя один из классов Collections является, безусловно, предпочтительным методом.
ArrayList _is_ автоматически расширяемый массив ссылок на объекты. Все, что не является примитивным типом (int, char и т. Д.), Является ссылкой на объект. – 2008-10-28 03:27:19
Вы не можете сохранить «фактический объект», объекты могут связываться только через ссылки на другие объекты. – Owen 2008-10-28 04:27:53