0 added
0 removed
Original
2026-01-01
Modified
2026-02-26
1
<p>Напоминаю, что массив относится к отдельному виду ссылочных типов! Возможно Вам стоит повторить Модуль 2. Урок 2. Типы данных в Java.</p>
1
<p>Напоминаю, что массив относится к отдельному виду ссылочных типов! Возможно Вам стоит повторить Модуль 2. Урок 2. Типы данных в Java.</p>
2
<p><strong>Массив</strong>- совокупность (последовательность) элементов однородного типа (элементы, которые имеют один и тот же тип).</p>
2
<p><strong>Массив</strong>- совокупность (последовательность) элементов однородного типа (элементы, которые имеют один и тот же тип).</p>
3
<p>Это специальный такой тип, который может в себе хранить ссылки на объекты любого другого типа и даже на другие массивы. У этого типа есть, можно так сказать, свой класс-обертка: Arrays. В нем есть много интересных статических методов.</p>
3
<p>Это специальный такой тип, который может в себе хранить ссылки на объекты любого другого типа и даже на другие массивы. У этого типа есть, можно так сказать, свой класс-обертка: Arrays. В нем есть много интересных статических методов.</p>
4
<ul><li><a>Класс Arrays</a>- спецификация только этого класса</li>
4
<ul><li><a>Класс Arrays</a>- спецификация только этого класса</li>
5
<li><a>Java Language Specification -> Chapter 10. Arrays</a>- общая спецификация массивов в java. Чтение документации улучшит понимание природы массивов в мире java.</li>
5
<li><a>Java Language Specification -> Chapter 10. Arrays</a>- общая спецификация массивов в java. Чтение документации улучшит понимание природы массивов в мире java.</li>
6
<li><a>The Java™ Tutorials Arrays</a>- это руководство по применению с примерами.</li>
6
<li><a>The Java™ Tutorials Arrays</a>- это руководство по применению с примерами.</li>
7
</ul><p>Учить эти документы наизусть не нужно. НО! стоит понимать о чем они и как их найти.</p>
7
</ul><p>Учить эти документы наизусть не нужно. НО! стоит понимать о чем они и как их найти.</p>
8
<ul><li><p>Ссылка на массив обозначается с помощью квадратных скобок [], пример: String[] nameArray; или String nameArray[];(так можно но не рекомендуется). На человеческом языке это значит: "планирую сохранить данные типа String в массиве nameArray". Тип данных, которые будут храниться в массиве -<strong>указывать обязательно</strong>при объявлении массива.</p>
8
<ul><li><p>Ссылка на массив обозначается с помощью квадратных скобок [], пример: String[] nameArray; или String nameArray[];(так можно но не рекомендуется). На человеческом языке это значит: "планирую сохранить данные типа String в массиве nameArray". Тип данных, которые будут храниться в массиве -<strong>указывать обязательно</strong>при объявлении массива.</p>
9
</li>
9
</li>
10
<li><p>Инициализировать массив означает: дать ссылке адрес конкретного массива в памяти. Например: Object[] myObject = new Object[10];. Именно часть ... new Object[10]; создает сам объект массива в памяти, который в себе уже может содержать объекты. А оператор присвоения = присваивает адрес этого объекта-массива ссылке myObject. При инициализации массива - в памяти создается список ссылок определенного типа. Каждая ссылка может знать адрес конкретного объекта в памяти. Если объект еще не записан в конкретную ячейку массива (не дали ей адрес конкретного объекта в памяти) - то ячейка ссылается на null - в случае с ссылочными типами и на 0 - в случае с числовыми примитивами.<strong>Количество пар квадратных скобок [] слева и справа от оператора присвоения = обязательно должно быть строго одинаковым.</strong></p>
10
<li><p>Инициализировать массив означает: дать ссылке адрес конкретного массива в памяти. Например: Object[] myObject = new Object[10];. Именно часть ... new Object[10]; создает сам объект массива в памяти, который в себе уже может содержать объекты. А оператор присвоения = присваивает адрес этого объекта-массива ссылке myObject. При инициализации массива - в памяти создается список ссылок определенного типа. Каждая ссылка может знать адрес конкретного объекта в памяти. Если объект еще не записан в конкретную ячейку массива (не дали ей адрес конкретного объекта в памяти) - то ячейка ссылается на null - в случае с ссылочными типами и на 0 - в случае с числовыми примитивами.<strong>Количество пар квадратных скобок [] слева и справа от оператора присвоения = обязательно должно быть строго одинаковым.</strong></p>
11
</li>
11
</li>
12
<li><p>Необходимо обязательно указать размер создаваемого в памяти массива. В примере выше этот размер равен 10. Но он может быть и больше, пока памяти хватит. Или даже равен 0, это особенная ситуация т.к. массив вроде бы и есть, но ячеек в нем нет. Если мы зададим размер числом один: Object[] myObject = new Object[1];, то мы получим массив только с одной ячейкой. И адрес у этой ячейки будет [0]. Естественно у массива не может быть отрицательного размера.<em><strong>Размер массива является неизменяемой величиной после инициализации!</strong></em></p>
12
<li><p>Необходимо обязательно указать размер создаваемого в памяти массива. В примере выше этот размер равен 10. Но он может быть и больше, пока памяти хватит. Или даже равен 0, это особенная ситуация т.к. массив вроде бы и есть, но ячеек в нем нет. Если мы зададим размер числом один: Object[] myObject = new Object[1];, то мы получим массив только с одной ячейкой. И адрес у этой ячейки будет [0]. Естественно у массива не может быть отрицательного размера.<em><strong>Размер массива является неизменяемой величиной после инициализации!</strong></em></p>
13
</li>
13
</li>
14
<li><p>Если у нас уже есть заранее известное некоторое количество элементов, то массив можно объявить и инициализировать так:</p>
14
<li><p>Если у нас уже есть заранее известное некоторое количество элементов, то массив можно объявить и инициализировать так:</p>
15
</li>
15
</li>
16
</ul><p>В данном примере перед оператором = объявлена ссылка и тип как обычно, а после, в фигурных скобках, уже перечислены все элементы. java подсчитает их и создаст в памяти массив необходимого размера и типа. Эту же строку можно переписать так:</p>
16
</ul><p>В данном примере перед оператором = объявлена ссылка и тип как обычно, а после, в фигурных скобках, уже перечислены все элементы. java подсчитает их и создаст в памяти массив необходимого размера и типа. Эту же строку можно переписать так:</p>
17
<p>В этом примере вызван конструктор (new String[]) но не передан ему размер массива, что не есть правильно. Но за ним сразу следует перечень элементов ({"Dee", "Max", "Ivan"}), из которых компилятор вычислит размер создаваемого массива и добавит их в него. Обратите внимание: применить наполнение массива элементами через фигурные скобки {} можно только в том случае, если нет заданного размера массива в квадратных скобках []. Если же в квадратных скобках задан размер массива - то это значит, что он уже инициализирован: имеет конкретную длину и забит стандартными значениями пустоты для конкретного типа (для String это null, а для int это 0). Можно даже так:</p>
17
<p>В этом примере вызван конструктор (new String[]) но не передан ему размер массива, что не есть правильно. Но за ним сразу следует перечень элементов ({"Dee", "Max", "Ivan"}), из которых компилятор вычислит размер создаваемого массива и добавит их в него. Обратите внимание: применить наполнение массива элементами через фигурные скобки {} можно только в том случае, если нет заданного размера массива в квадратных скобках []. Если же в квадратных скобках задан размер массива - то это значит, что он уже инициализирован: имеет конкретную длину и забит стандартными значениями пустоты для конкретного типа (для String это null, а для int это 0). Можно даже так:</p>
18
<p>Это был пример двумерного массива. Или так:</p>
18
<p>Это был пример двумерного массива. Или так:</p>
19
<p>Это был пример четырехмерного массива. Обратите внимание на количество квадратных скобок по обе стороны оператора присвоения. Я об этом писал выше. Рассмотрим многомерные массивы детальнее в этом уроке немного позже.</p>
19
<p>Это был пример четырехмерного массива. Обратите внимание на количество квадратных скобок по обе стороны оператора присвоения. Я об этом писал выше. Рассмотрим многомерные массивы детальнее в этом уроке немного позже.</p>
20
<ul><li>Каждый элемент массива имеет свой индекс (считаем с 0 до n-1). Например заполним некоторые ячейки String массива именами:</li>
20
<ul><li>Каждый элемент массива имеет свой индекс (считаем с 0 до n-1). Например заполним некоторые ячейки String массива именами:</li>
21
</ul><ul><li>Массивы в java имеют границу от 0 включительно до n<strong>исключительно</strong>, где n это заданный размер массива. Если кто-то или что-то пытается обратиться к несуществующей ячейке массива - то гарантировано получает ArrayIndexOutOfBoundsException. Это правило справедливо как для чтения<strong>из</strong>, так и для записи<strong>в</strong>массив. Например если мы вдруг забыли как считаются ячейки в массивах и решили получить последний элемент из предыдущего примера вот так:</li>
21
</ul><ul><li>Массивы в java имеют границу от 0 включительно до n<strong>исключительно</strong>, где n это заданный размер массива. Если кто-то или что-то пытается обратиться к несуществующей ячейке массива - то гарантировано получает ArrayIndexOutOfBoundsException. Это правило справедливо как для чтения<strong>из</strong>, так и для записи<strong>в</strong>массив. Например если мы вдруг забыли как считаются ячейки в массивах и решили получить последний элемент из предыдущего примера вот так:</li>
22
</ul><p>То же самое будет при попытке обратиться к ячейке с индексом меньше 0.</p>
22
</ul><p>То же самое будет при попытке обратиться к ячейке с индексом меньше 0.</p>
23
<p>Изучив документацию, приведенную выше, - вы узнаете о некоторых членах класса []. Это поможет справиться с дополнительными практическими заданиями и закрепить знания.</p>
23
<p>Изучив документацию, приведенную выше, - вы узнаете о некоторых членах класса []. Это поможет справиться с дополнительными практическими заданиями и закрепить знания.</p>
24
<h2>массивы имеющие мерность больше 1</h2>
24
<h2>массивы имеющие мерность больше 1</h2>
25
<p><strong>Двумерный массив</strong>- это массив, который содержит в себе один порядок подмассивов. Пример: int[][] exampleArray = new int[5][2];. Этот массив может быть применен для хранения матрицы размером 5х2. Прочитать этот массив можно так: основной массив размером 5, каждая ячейка которого ссылается на подмассив размером 2, а каждая ячейка каждого из пяти подмассивов предназначена для хранения целого числа (int).</p>
25
<p><strong>Двумерный массив</strong>- это массив, который содержит в себе один порядок подмассивов. Пример: int[][] exampleArray = new int[5][2];. Этот массив может быть применен для хранения матрицы размером 5х2. Прочитать этот массив можно так: основной массив размером 5, каждая ячейка которого ссылается на подмассив размером 2, а каждая ячейка каждого из пяти подмассивов предназначена для хранения целого числа (int).</p>
26
<p>Важно отметить, что подмассивы не обязаны быть одинаковой длины или вообще быть инициализированы. Пример:</p>
26
<p>Важно отметить, что подмассивы не обязаны быть одинаковой длины или вообще быть инициализированы. Пример:</p>
27
<p>Инициализируем теперь и вложенные массивы (подмассивы):</p>
27
<p>Инициализируем теперь и вложенные массивы (подмассивы):</p>
28
<p>Визуальный пример:</p>
28
<p>Визуальный пример:</p>
29
<p><strong>Трехмерный массив</strong>- это массив, который содержит в себе два порядка подмассивов. Пример int[][][] exampleArray = new int[][][];. С помощью такого массива можно описать, например, некий куб. В данном примере мы имеем основной массив, который содержит в себе подмассивы, а те, в свою очередь, тоже содержат подмассивы, которые уже и будут хранить в себе конкретные данные или ссылки на объекты.</p>
29
<p><strong>Трехмерный массив</strong>- это массив, который содержит в себе два порядка подмассивов. Пример int[][][] exampleArray = new int[][][];. С помощью такого массива можно описать, например, некий куб. В данном примере мы имеем основной массив, который содержит в себе подмассивы, а те, в свою очередь, тоже содержат подмассивы, которые уже и будут хранить в себе конкретные данные или ссылки на объекты.</p>
30
<p><strong>Многомерный массив</strong>- это массив, который содержит в себе n-1 порядков вложенных массивов. Например в четырехмерном массиве будет три порядка вложенных массивов и только в третьем уже будут непосредственно сохранятся данные.</p>
30
<p><strong>Многомерный массив</strong>- это массив, который содержит в себе n-1 порядков вложенных массивов. Например в четырехмерном массиве будет три порядка вложенных массивов и только в третьем уже будут непосредственно сохранятся данные.</p>
31
<p>На практике чаще всего приходится применять массивы размерностью 1 или 2.</p>
31
<p>На практике чаще всего приходится применять массивы размерностью 1 или 2.</p>
32
<p>P.S. Экспериментируйте с кодом и допускайте ошибки уже сейчас, а не на продакшене. )</p>
32
<p>P.S. Экспериментируйте с кодом и допускайте ошибки уже сейчас, а не на продакшене. )</p>