0 added
0 removed
Original
2026-01-01
Modified
2026-03-10
1
<p>Мы уже рассказывали про<a>массивы в Java</a>. В этой статье поговорим про массив объектов и о том, как добавить объект в массив Java. Но сначала давайте вспомним, что<strong>массив</strong>- это своеобразный контейнер, где может храниться несколько однородных переменных.</p>
1
<p>Мы уже рассказывали про<a>массивы в Java</a>. В этой статье поговорим про массив объектов и о том, как добавить объект в массив Java. Но сначала давайте вспомним, что<strong>массив</strong>- это своеобразный контейнер, где может храниться несколько однородных переменных.</p>
2
<p>Массивы имеют<strong>следующие особенности</strong>: 1. Хранят переменные лишь одного типа. 2. Имеют определённую длину. 3. Размер массива поменять нельзя. 4. Элементы массива имеют индексы, позволяющие обратиться к этим элементам в случае надобности. 5. Номер 1-го элемента массива - это 0, а не 1; 6. Всегда можно создать пустой массив, а поместить в него элементы можно и потом.</p>
2
<p>Массивы имеют<strong>следующие особенности</strong>: 1. Хранят переменные лишь одного типа. 2. Имеют определённую длину. 3. Размер массива поменять нельзя. 4. Элементы массива имеют индексы, позволяющие обратиться к этим элементам в случае надобности. 5. Номер 1-го элемента массива - это 0, а не 1; 6. Всегда можно создать пустой массив, а поместить в него элементы можно и потом.</p>
3
<p>Впрочем, всё это вы уже знаете из<a>предыдущей статьи</a>. Но что такое<strong>массив объектов</strong>, мы не рассматривали. Впрочем, сейчас мы этот пробел устраним.</p>
3
<p>Впрочем, всё это вы уже знаете из<a>предыдущей статьи</a>. Но что такое<strong>массив объектов</strong>, мы не рассматривали. Впрочем, сейчас мы этот пробел устраним.</p>
4
<h2>Массивы объектов в Java</h2>
4
<h2>Массивы объектов в Java</h2>
5
<p>Массив объектов похож на обычный массив, но имеет другую "начинку". Это связано с тем, что объекты сложнее переменных, т. к. имеют больше составляющих. Но объявление массива объектов происходит так же:</p>
5
<p>Массив объектов похож на обычный массив, но имеет другую "начинку". Это связано с тем, что объекты сложнее переменных, т. к. имеют больше составляющих. Но объявление массива объектов происходит так же:</p>
6
<p>Как видите, мы создаём не массив разных объектов, а массив объектов<strong>одного класса</strong>. И в начале, и в конце мы указываем название класса, а в квадратных скобках в конце - размер массива.</p>
6
<p>Как видите, мы создаём не массив разных объектов, а массив объектов<strong>одного класса</strong>. И в начале, и в конце мы указываем название класса, а в квадратных скобках в конце - размер массива.</p>
7
<h2>Какие ошибки делают чаще всего?</h2>
7
<h2>Какие ошибки делают чаще всего?</h2>
8
<p>У массива объектов есть важная особенность - он включает в себя не объекты сами по себе со всеми их методами и переменными, а лишь<strong>ссылки на объекты</strong>.</p>
8
<p>У массива объектов есть важная особенность - он включает в себя не объекты сами по себе со всеми их методами и переменными, а лишь<strong>ссылки на объекты</strong>.</p>
9
<p>И вот это может стать причиной ошибок. Смотрите, если, к примеру, у нас в массиве есть переменная int и мы не задали её значение, то она по умолчанию станет равна 0. Когда речь идёт про массив объектов - всё иначе. В таком массиве, как уже было сказано,<strong>хранятся ссылки на объекты</strong>, но пока объект не существует, ссылки тоже не могут существовать. Именно поэтому в массиве объектов по умолчанию хранится значение<strong>null</strong>. И если вы попытаетесь вызвать метод объекта, который не создан/не существует, получите распространённую ошибку<strong>NullPointerException</strong>. Это значит, что перед тем, как обращаться к объектам, их обязательно нужно сначала<strong>создать</strong>, то есть<strong>добавить объект в массив Java</strong>.</p>
9
<p>И вот это может стать причиной ошибок. Смотрите, если, к примеру, у нас в массиве есть переменная int и мы не задали её значение, то она по умолчанию станет равна 0. Когда речь идёт про массив объектов - всё иначе. В таком массиве, как уже было сказано,<strong>хранятся ссылки на объекты</strong>, но пока объект не существует, ссылки тоже не могут существовать. Именно поэтому в массиве объектов по умолчанию хранится значение<strong>null</strong>. И если вы попытаетесь вызвать метод объекта, который не создан/не существует, получите распространённую ошибку<strong>NullPointerException</strong>. Это значит, что перед тем, как обращаться к объектам, их обязательно нужно сначала<strong>создать</strong>, то есть<strong>добавить объект в массив Java</strong>.</p>
10
<h2>Перейдём к практике</h2>
10
<h2>Перейдём к практике</h2>
11
<p>Приступим к созданию массива объектов. Представьте, что у нас есть класс ObjMass и всё, что в нём есть, - это массив объектов Dog из трёх элементов:</p>
11
<p>Приступим к созданию массива объектов. Представьте, что у нас есть класс ObjMass и всё, что в нём есть, - это массив объектов Dog из трёх элементов:</p>
12
public class ObjMass { Dog[] name = new Dog [3]; }<p>Прекрасно. Но так как класс Dog мы раньше не описывали (интерпретатор Java знать не знает, что такое Dog и откуда его взять), то название объекта выделится красным. Исправим это, создав параллельно класс Dog:</p>
12
public class ObjMass { Dog[] name = new Dog [3]; }<p>Прекрасно. Но так как класс Dog мы раньше не описывали (интерпретатор Java знать не знает, что такое Dog и откуда его взять), то название объекта выделится красным. Исправим это, создав параллельно класс Dog:</p>
13
class ObjMass { Dog[] abc = new Dog [3]; } class Dog{ }<p>Так, хорошо. Но зачем нам массив, состоящий из пустых объектов? Пусть у собак будут хотя бы клички:</p>
13
class ObjMass { Dog[] abc = new Dog [3]; } class Dog{ }<p>Так, хорошо. Но зачем нам массив, состоящий из пустых объектов? Пусть у собак будут хотя бы клички:</p>
14
class ObjMass { Dog[] abc = new Dog [3]; } class Dog{ String name; public Dog (String name){ this.name = name; } }<p>Вот, теперь Dog имеет содержание.</p>
14
class ObjMass { Dog[] abc = new Dog [3]; } class Dog{ String name; public Dog (String name){ this.name = name; } }<p>Вот, теперь Dog имеет содержание.</p>
15
<p>Давайте сейчас обратимся к объектам, которые ещё не созданы, как говорится, расширим пример. Обратите ваше внимание, что у нас перед массивом объектов Dog находится модификатор static. Также добавим метод main:</p>
15
<p>Давайте сейчас обратимся к объектам, которые ещё не созданы, как говорится, расширим пример. Обратите ваше внимание, что у нас перед массивом объектов Dog находится модификатор static. Также добавим метод main:</p>
16
class ObjMass { static Dog[] abc = new Dog [3]; public static void main (String[] args){ } } } class Dog{ String name; public Dog (String name){ this.name = name; } }<p>Для вывода массива на экран создаём цикл. И выводим не имена собак (abc[i].name), а объекты - abc[i]:</p>
16
class ObjMass { static Dog[] abc = new Dog [3]; public static void main (String[] args){ } } } class Dog{ String name; public Dog (String name){ this.name = name; } }<p>Для вывода массива на экран создаём цикл. И выводим не имена собак (abc[i].name), а объекты - abc[i]:</p>
17
class ObjMass { static Dog[] abc = new Dog [3]; public static void main (String[] args){ for (int i = 0; i<3; i++){ System.out.println(abc[i]); } } } class Dog{ String name; public Dog (String name){ this.name = name; } }<p>И увидим следующий результат:</p>
17
class ObjMass { static Dog[] abc = new Dog [3]; public static void main (String[] args){ for (int i = 0; i<3; i++){ System.out.println(abc[i]); } } } class Dog{ String name; public Dog (String name){ this.name = name; } }<p>И увидим следующий результат:</p>
18
<p>Это и есть значения по умолчанию, при ссылке на которые возникнет ошибка<strong>NullPointerException</strong>. Она появляется, когда мы ссылаемся на свойство null-ного объекта. К примеру, давайте попробуем вывести на экран имена собак (abc[i].name):</p>
18
<p>Это и есть значения по умолчанию, при ссылке на которые возникнет ошибка<strong>NullPointerException</strong>. Она появляется, когда мы ссылаемся на свойство null-ного объекта. К примеру, давайте попробуем вывести на экран имена собак (abc[i].name):</p>
19
class ObjMass { static Dog[] abc = new Dog [3]; public static void main (String[] args){ for (int i = 0; i<3; i++){ System.out.println(abc[i].name); } } } class Dog{ String name; public Dog (String name){ this.name = name; } }<p>Результатом станет тот самый NullPointerException. Чтобы этого не допустить, массив объектов надо заполнить:</p>
19
class ObjMass { static Dog[] abc = new Dog [3]; public static void main (String[] args){ for (int i = 0; i<3; i++){ System.out.println(abc[i].name); } } } class Dog{ String name; public Dog (String name){ this.name = name; } }<p>Результатом станет тот самый NullPointerException. Чтобы этого не допустить, массив объектов надо заполнить:</p>
20
class ObjMass { static Dog[] abc = new Dog [3]; public static void main (String[] args){ abc[0] = new Dog("Billy"); abc[1] = new Dog("Tom"); abc[2] = new Dog("Jonny"); for (int i = 0; i<3; i++){ System.out.println(abc[i].name); } } } class Dog{ String name; public Dog (String name){ this.name = name; } }<p>Результат выполнения кода:</p>
20
class ObjMass { static Dog[] abc = new Dog [3]; public static void main (String[] args){ abc[0] = new Dog("Billy"); abc[1] = new Dog("Tom"); abc[2] = new Dog("Jonny"); for (int i = 0; i<3; i++){ System.out.println(abc[i].name); } } } class Dog{ String name; public Dog (String name){ this.name = name; } }<p>Результат выполнения кода:</p>
21
<p>Вот и всё, теперь вы знакомы с особенностями применения<strong>массива объектов в Java</strong>и знаете,<strong>как добавить объект в массив</strong>. В прочих аспектах всё функционирует практически так же, как и в массивах примитивных типов.</p>
21
<p>Вот и всё, теперь вы знакомы с особенностями применения<strong>массива объектов в Java</strong>и знаете,<strong>как добавить объект в массив</strong>. В прочих аспектах всё функционирует практически так же, как и в массивах примитивных типов.</p>
22
22