В этом уроке мы познакомимся с массивами в Java: разберём их концепцию, научимся с ними взаимодействовать и узнаем, какие типы массивов бывают.
В прошлых уроках у нас была переменная int a=31 хранящая одно число 31.
А что если мы хотим иметь переменную в которой будет храниться 100 разных числовых значений?
Такая переменная называется массивом.
Объявляется массив так:
int[] a;
[]
значат, что это массив и в нем будет храниться много значений (значений типа int в данном случае).
Пока массив а был просто объявлен. Чтобы в него поместить значения нужно выделить место в памяти где будут храниться значения массива и указать конкретное количество значений, которое может храниться в массиве.
Ключевым словом new
мы выделяем память под массив, который может вмещать максимум 5 элементов.
a = new int[5];
После этого можно записывать в эту память числа.
Объявление и выделение памяти можно записать в одну строку как:
int[] a = new int[5];
Также можно при создании массива сразу записать в них значения.
int[] b = {56, 3, 7, 63, 13};
Заранее с помощью new память под эти значения выделять не нужно, так как мы сразу записываем в память значения.
Взаимодействие с массивом
Итак рассмотрим как мы можем взаимодействовать с массивом.
Ниже в примере программы создается массив b, который содержит 5 числовых значений.
Каждое из пяти значений имеет свой порядковый номер в массиве:
56 – имеет номер 0
, 3 – имеет номер 1
, 7 – имеет номер 2
, 63 – имеет номер 3
, 13 – имеет номер 4
. Очевидно, что номера элементам массива выдаются по порядку, то есть первому элементу в массиве номер ноль, второму номер 1, третьему элементу номер 2 и т.д.
Также как видим порядковый номер в массивах начинается с нуля, а не единицы.
Правильно этот порядковый номер в массиве называть индексом.
Поясним на примере:
Вывод:

Обход массива циклом
Выведем все элементы массива b по порядку с помощью for.
Любой массив имеет внутри себя переменную length в которой храниться количество элементов массива. Это можно использовать для обхода элементов циклом.
Поясним на примере:
Вывод:

Как видим, можно легко пройтись по элементам массива и совершать с каждым какие-то действия на каждой итерации. Например, выводить на консоль каждый элемент, как в приведенном примере.
Обход массива циклом for-each
Для обхода элементов массива можно использовать особенный вид for цикла.
Называется он for-each
.
Используя цикл foreach нам не нужно знать размер массива.
В примере ниже цикл foreach начиная с первого элемента массива b поочереди берет элементы и помещает их в singleArrayElement
Вывод:

То есть на первой итерации этого цикла берется первый элемент массива b и помещается в переменную singleArrayElement, которая того же типа, что и массив b и в теле цикла можно работать с первым элементом массива через эту переменную, на второй итерации цикла второй элемент помещается в singleArrayElement вместо первого и происходит работа уже со вторым элементом массива, на третьей помещается третий и т.д. до конца массива.
Важно знать: singleArrayElement — это копия значения элемента массива, а не сам элемент. Это означает, что изменяя singleArrayElement в теле цикла, вы не изменяете сам массив.
Однако, если массив содержит объекты (которые мы ещё не проходили), а не простые типы данных, то for-each работает с самим объектом, а не с его копией
Двумерные массивы
До этого мы рассматирвали одномерный массив, но массивы также бывают многомерными.
Представьте одномерный массив, в котором каждый элемент — это полноценный одномерный массив чисел, такой же, как мы рассматривали выше.
То есть это массив массивов чисел, и он называется двумерным массивом.
Ниже приведён пример двумерного массива. Он объявляется с помощью [][]
. Как видно, через запятую перечислены массивы чисел — каждый из них является отдельным элементом основного массива.
Как же получить доступ к числам подмассивов?
В первой скобочке мы пишем индекс нужного нам подмассива.
Во второй скобочке пишем индекс нужного нам элемента (в нашем случае числа) этого подмассива.
Пример: строка кода ниже достает из массива b число 2. Мы обращаемся ко второму подмасиву, к третьему элементу этого подмассива.
System.out.println(b[1][2]);
Помним что элементы в массивах нумеруются начиная с нуля. Поэтому 1 и 2, а не 2 и 3.
Полный пример:
Вывод:

Обход двумерного массива циклом
По двумерному массиву можно пройтись с помощью любого вида цикла, который мы рассматривали ранее. Так как двумерный массив состоит из массивов внутри массива, для его обхода используются вложенные циклы.
Для простоты воспользуемся for-each
. Ниже показано, как с помощью вложенных циклов пройтись по всем числам в двумерном массиве и вывести их на консоль.
Пример программы:
Вывод:

Table of Contents
Строки в Java
Работа со строками в Java: конкатенация, обход символов, функции length(), charAt(), equals() и replace(). Практические примеры
Функции в Java
Изучите создание и использование функций (методов) в Java: параметры, возвращаемые значения, практический пример. Уменьшаем дублирование кода.
Область видимости в Java
Узнайте, как работает область видимости переменных в Java. Примеры области видимости блоков if, for и switch и других.