Массив объектов в Java. Как добавить объект в массив Java?
Мы уже рассказывали про массивы в Java. В этой статье поговорим про массив объектов и о том, как добавить объект в массив Java. Но сначала давайте вспомним, что массив — это своеобразный контейнер, где может храниться несколько однородных переменных.

Массивы имеют следующие особенности: 1. Хранят переменные лишь одного типа. 2. Имеют определённую длину. 3. Размер массива поменять нельзя. 4. Элементы массива имеют индексы, позволяющие обратиться к этим элементам в случае надобности. 5. Номер 1-го элемента массива — это 0, а не 1; 6. Всегда можно создать пустой массив, а поместить в него элементы можно и потом.
Впрочем, всё это вы уже знаете из предыдущей статьи. Но что такое массив объектов, мы не рассматривали. Впрочем, сейчас мы этот пробел устраним.
Массивы объектов в Java
Массив объектов похож на обычный массив, но имеет другую «начинку». Это связано с тем, что объекты сложнее переменных, т. к. имеют больше составляющих. Но объявление массива объектов происходит так же:

Как видите, мы создаём не массив разных объектов, а массив объектов одного класса. И в начале, и в конце мы указываем название класса, а в квадратных скобках в конце — размер массива.

Какие ошибки делают чаще всего?
У массива объектов есть важная особенность — он включает в себя не объекты сами по себе со всеми их методами и переменными, а лишь ссылки на объекты.

И вот это может стать причиной ошибок. Смотрите, если, к примеру, у нас в массиве есть переменная int и мы не задали её значение, то она по умолчанию станет равна 0. Когда речь идёт про массив объектов — всё иначе. В таком массиве, как уже было сказано, хранятся ссылки на объекты, но пока объект не существует, ссылки тоже не могут существовать. Именно поэтому в массиве объектов по умолчанию хранится значение null. И если вы попытаетесь вызвать метод объекта, который не создан/не существует, получите распространённую ошибку NullPointerException. Это значит, что перед тем, как обращаться к объектам, их обязательно нужно сначала создать, то есть добавить объект в массив Java.
Перейдём к практике
Приступим к созданию массива объектов. Представьте, что у нас есть класс ObjMass и всё, что в нём есть, — это массив объектов Dog из трёх элементов:
Прекрасно. Но так как класс Dog мы раньше не описывали (интерпретатор Java знать не знает, что такое Dog и откуда его взять), то название объекта выделится красным. Исправим это, создав параллельно класс Dog:
Так, хорошо. Но зачем нам массив, состоящий из пустых объектов? Пусть у собак будут хотя бы клички:
Вот, теперь Dog имеет содержание.
Давайте сейчас обратимся к объектам, которые ещё не созданы, как говорится, расширим пример. Обратите ваше внимание, что у нас перед массивом объектов Dog находится модификатор static. Также добавим метод main:
Для вывода массива на экран создаём цикл. И выводим не имена собак (abc[i].name), а объекты — abc[i]:
И увидим следующий результат:
Это и есть значения по умолчанию, при ссылке на которые возникнет ошибка NullPointerException. Она появляется, когда мы ссылаемся на свойство null-ного объекта. К примеру, давайте попробуем вывести на экран имена собак (abc[i].name):
Результатом станет тот самый NullPointerException. Чтобы этого не допустить, массив объектов надо заполнить:
Результат выполнения кода:
Вот и всё, теперь вы знакомы с особенностями применения массива объектов в Java и знаете, как добавить объект в массив. В прочих аспектах всё функционирует практически так же, как и в массивах примитивных типов.
Как добавить элемент в массив в Java?
Учитывая массив размера n, задача состоит в том, чтобы добавить элемент x в этот массив в Java.
Размер массива нельзя динамически изменять в Java, как это делается в C / C ++. Следовательно, чтобы добавить элемент в массив, можно сделать один из следующих методов:
- Создав новый массив:
- Создайте новый массив размером n + 1, где n — размер исходного массива.
- Добавьте n элементов исходного массива в этот массив.
- Добавьте новый элемент в позицию n + 1.
- Распечатать новый массив.
How to add new elements to an array?
Those two appends are not compiling. How would that work correctly?
![]()
19 Answers 19
The size of an array can’t be modified. If you want a bigger array you have to instantiate a new one.
A better solution would be to use an ArrayList which can grow as you need it. The method ArrayList.toArray( T[] a ) gives you back your array if you need it in this form.
If you need to convert it to a simple array.
But most things you do with an array you can do with this ArrayList, too:
Use a List<String> , such as an ArrayList<String> . It’s dynamically growable, unlike arrays (see: Effective Java 2nd Edition, Item 25: Prefer lists to arrays).
If you insist on using arrays, you can use java.util.Arrays.copyOf to allocate a bigger array to accomodate the additional element. This is really not the best solution, though.
This is O(N) per append . ArrayList , on the other hand, has O(1) amortized cost per operation.
See also
- An array is a container object that holds a fixed number of values of a single type. The length of an array is established when the array is created. After creation, its length is fixed.
Apache Commons Lang has
it returns a new array, but if you’re really working with arrays for some reason, this may be the ideal way to do this.
There is another option which i haven’t seen here and which doesn’t involve "complex" Objects or Collections.
There is no method append() on arrays. Instead as already suggested a List object can service the need for dynamically inserting elements eg.
Or if you are really keen to use an array:
but then this is a fixed size and no elements can be added.
I’ve made this code! It works like a charm!
I hope you like it!!
As tangens said, the size of an array is fixed. But you have to instantiate it first, else it will be only a null reference.
This array can contain only 10 elements. So you can append a value only 10 times. In your code you’re accessing a null reference. That’s why it doesnt work. In order to have a dynamically growing collection, use the ArrayList.
![]()
You need to use a Collection List. You cannot re-dimension an array.
Adding new items to String array.
![]()
![]()
There are many ways to add an element to an array. You can use a temp List to manage the element and then convert it back to Array or you can use the java.util.Arrays.copyOf and combine it with generics for better results.
This example will show you how:
To use this method you just need to call it like this:
If you want to merge two array you can modify the previous method like this:
Now you can call the method like this:
As I mentioned, you also may use List objects. However, it will require a little hack to cast it safe like this: