- Массивы в Java: справочное руководство
- 2. Что такое массив?
- 3. Настройка массива
- 3.1. Декларация
- Что такое массивы в Java и как с ними работать
- Зачем нужны массивы в Java
- Объявление массива в Java
- Создание массива в Java
- Чтение и запись элементов
- Инициализация массива в Java
- Длина массива
- Вывод массива
- Одномерные и многомерные Java-массивы
- Методы для работы с массивами
- Главное о массивах в Java
Массивы в Java: справочное руководство
В этом руководстве мы подробно рассмотрим основную концепцию языка Java — массивы.
Сначала мы увидим, что такое массив, а затем как их использовать; в целом, мы рассмотрим, как:
- Начните работу с массивами
- Чтение и запись элементов массива
- Цикл по массиву
- Преобразование массивов в другие объекты, такие как список или потоки
- Сортировка, поиск и объединение массивов
2. Что такое массив?
Прежде всего, нам нужно определить, что такое массив? Согласно документации Java , массив — это объект, содержащий фиксированное количество значений одного типа . Элементы массива индексируются, что означает, что мы можем получить к ним доступ с помощью чисел (называемых индексами ).
Мы можем рассматривать массив как пронумерованный список ячеек, где каждая ячейка представляет собой переменную, содержащую значение. В Java нумерация начинается с 0.
Существуют массивы примитивных типов и массивы объектных типов. Это означает, что мы можем использовать массивы int, float, boolean, …, а также массивы String, Object и пользовательских типов.
3. Настройка массива
Теперь, когда массивы четко определены, давайте углубимся в их использование.
Мы рассмотрим множество тем, обучающих нас использованию массивов. Мы изучим некоторые основы, такие как объявление и инициализация массива, но мы также рассмотрим более сложные темы, такие как сортировка и поиск в массивах.
Начнем с объявления и инициализации.
3.1. Декларация
Начнем с декларации. Есть два способа объявить массив в Java:
Что такое массивы в Java и как с ними работать
Массив — это набор однотипных элементов, упорядоченных по номерам.
В жизни мы часто сталкиваемся с массивами — например, жилыми или лесными. То есть совокупностью множества однородных предметов. Чтобы разделять элементы, им иногда присваиваются номера: в жилом массиве после названия улицы идет номер дома, корпуса.
Это справедливо и для массивов в программировании — набора однотипных элементов, расположенных в памяти друг за другом.
Зачем нужны массивы в Java
Без массивов, чтобы работать с набором однотипных данных, для каждого элемента объявляли бы отдельную переменную. Каждый раз устанавливали бы правила именования таких переменных, чтобы в них не запутаться. Запоминали бы, сколько переменных уже создали.
При этом компилятору нужно было бы понимать, что с набором объявленных в разных местах переменных вы хотите работать как с единым целым. Располагать их в памяти рядом друг с другом, чтобы эффективно записывать и читать значения. Массивы же упрощают такое количество работы.
Объявление массива в Java
Чтобы начать работу с массивом, первым делом его нужно объявить — как и обычную переменную. Это выглядит так:
Идущие подряд открывающая и закрывающая квадратные скобки сообщают компилятору, что переменная — массив. Тип элементов задает стоящий перед скобками оператор. Это может быть любой из поддерживаемых в Java примитивных типов данных, например int, byte, char, название класса или перечисления — enum. В нашем примере массив будет состоять из вещественных чисел.
Допустима форма объявления, где скобки ставят после названия переменной:
Такая форма объявления массива пришла в Java из языка C, но ее употребляют редко.
Создание массива в Java
После объявления массива его нужно создать. На этом этапе сообщают компилятору необходимый размер. С точки зрения компилятора Java-массив — это объект. Поэтому его, как и объект, создают при помощи ключевого слова new. Общий синтаксис:
new имя_массива[длина_массива];
Объявление и создание массива может быть описано одной строкой:
double[] myFancyArray = new double[5];
Или с помощью отдельных операторов:
double[] myFancyArray; myFancyArray = new double[5];
Чтение и запись элементов
Массив — это пронумерованный набор. Доступ к каждому элементу осуществляют по его номеру (индексу). Нумерация элементов массива начинается с нуля, а не с единицы, поэтому первый элемент массива будет с индексом 0, а последний — «длина_массива — 1».
Нумерация элементов массива
Общий синтаксис оператора доступа к элементу массива:
имя_массива[индекс элемента]
Пример чтения значения элемента:
System.out.println(myFancyArray[3]);
Пример записи значения элемента:
Инициализация массива в Java
Чтобы выполнять действия, заполните массив нужными значениями — инициализируйте. Сделать это можно несколькими способами.
✔️ Поочередно записывать значения в каждый элемент массива:
myFancyArray[0] = 0.5; myFancyArray[1] = 1.0; myFancyArray[2] = 1.5; myFancyArray[3] = 2.0;
double[] myFancyArray = new double[] ;
или без new:
Длина массива
Не нужно указывать длину массива при инициализации в момент объявления. Компилятор выведет ее из количества значений в выражении.
❗ Важно: когда вы создадите массив, изменить длину уже не получится. Если захотите, чтобы массив был длиннее, придется создать новый и скопировать в него значения старого. Затем присвоить переменной значение нового массива.
Немного упростит операцию статический метод arraycopy из утилитарного класса System.Синтаксис метода:
System.arraycopy(src, srcPos, dest, destPos, length);
src — старый массив;
srcPos — позиция в старом массиве, с которой начинают чтение;
dest — новый массив;
destPos — позиция в новом массиве, с которой начинают запись;
length — количество элементов, которые надо прочитать из старого массива.
Так увеличивают длину массива:
double[] values = new double[2]; values[0] = 1.0; values[1] = 1.5; double[] tmpValues = new double[3]; System.arraycopy(values, 0, tmpValues, 0, values.length); values = tmpValues;
Чтобы узнать длину массива, прочитайте значение переменной length, ассоциированной с ним:
int arrayLength = myFancyArray.length; System.out.printLn(arrayLength);
Значение длины поможет в работе с циклом for:
double[] myFancyArray = new double[5]; for (int i = 0; i
Вывод массива
Удобно пользоваться оператором цикла for:
String[] weekDays = ; for (int i = 0; i
В версиях Java после 1.6 доступен оператор foreach:
String[] weekDays = ; for (String weekDay: weekDays)
В Java после версии 1.8 появились Stream API — стримы, которые тоже упрощают работу. Преобразовать массив в стрим поможет статический метод stream в утилитарном классе Arrays.
String[] weekDays = ; Arrays.stream(weekDays).forEach(weekDay -> System.out.println(weekDay) );
Одномерные и многомерные Java-массивы
Типом элемента массива может быть любой тип данных, который поддерживает язык программирования. В случае с Java тип элемента — объект. Массив — это тоже объект. Поэтому ничто не мешает объявить в качестве переменной массив массивов:
Такой массив называют двумерным, или матрицей. Простой же массив, где элемент — не другой массив, считают одномерным. Структуру двумерного массива можно представить в виде таблицы:
Вы получите доступ к элементу такого массива, если укажете номер строки и столбца этой таблицы:
i — номер строки, а j — номер столбца
При этом выражение myMatrixArray.length вернет количество строк в таблице. А с помощью выражения myMatrixArray[0].length получите количество столбцов в строке.
Объявляют двумерный массив, в котором элементы опять будут массивом, так:
Такой массив называют трехмерным, или кубом. Для доступа к элементу укажите уже три индекса.
Можно объявлять и четырех-, пяти- и десятимерные массивы. Максимальное количество измерений ограничено спецификацией Java — 255. Это объявление переменной выдаст ошибку компиляции:
double[][][][][][][][][][][][][][][][] [][][][][][][][][][][][][][][][] [][][][][][][][][][][][][][][][] [][][][][][][][][][][][][][][][] [][][][][][][][][][][][][][][][] [][][][][][][][][][][][][][][][] [][][][][][][][][][][][][][][][] [][][][][][][][][][][][][][][][] [][][][][][][][][][][][][][][][] [][][][][][][][][][][][][][][][] [][][][][][][][][][][][][][][][] [][][][][][][][][][][][][][][][] [][][][][][][][][][][][][][][][] [][][][][][][][][][][][][][][][] [][][][][][][][][][][][][][][][] [][][][][][][][][][][][][][][][] myUberArray;
Ошибка появится, потому что количество измерений объявленного массива равно 256.
Ошибка компиляции при попытке объявить массив, у которого слишком много измерений
Методы для работы с массивами
Стандартная библиотека Java предоставляет набор методов, которые помогают работать с массивами. Они представлены как статические методы в утилитарном классе Arrays.
🚀 Преобразование к строке
Чтобы вывести массив на печать, воспользуйтесь методом Arrays.toString(a). Он преобразует массив в строку со значениями всех элементов массива, разделенных запятой. Начало и конец будут обозначены квадратными скобками.
int[] myArray = new int[] ; System.out.println(Arrays.toString(myArray));
Результат преобразования массива к строке
🚀 Сортировка
Arrays.sort(a) отсортирует массив a в порядке возрастания значений элементов. Если нужно отсортировать в другом порядке, воспользуйтесь методом Arrays.sort(a, Comparator c), где Comparator c — экземпляр класса Comparator, который позволяет сравнивать два соседних элемента.
int[] myArray = new int[] < 6, 4, 3, 5 >; Arrays.sort( myArray ); System.out.println( Arrays.toString( myArray ) );
Результат сортировки массива
Чтобы заполнить массив одинаковыми значениями и не писать цикл, воспользуйтесь методом Arrays.fill(a, val). Он присвоит всем элементам массива a значение val.
Можно заполнить не весь массив, а только какую-то его часть: Arrays.fill(a, from, to, val). Метод присвоит элементам массива a значение val, начиная с элемента с индексом from и заканчивая элементом с индексом to-1.
int[] myArray = new int[ 10 ]; Arrays.fill( myArray, 7 ); System.out.println( Arrays.toString( myArray ) );
Результат заполнения массива значением 7
Стандартная библиотека Java предоставляет и другие методы работы. Изучайте их в документации класса Arrays.
Главное о массивах в Java
- Массив — набор однотипных элементов, расположенных друг за другом. Доступ к ним осуществляют по порядковому номеру.
- Длину массива задают во время его создания. После изменить длину уже не получится — нужно создавать новый и копировать значения старого.
- В Java можно объявлять массивы, элементами которых тоже будут массивы. Одномерные массивы Java — это когда элемент не другой массив.
- Стандартная библиотека Java предоставляет большой набор методов, которые упрощают работу. Например, позволяют отсортировать массив, заполнить одинаковыми значениями, преобразовать к строке.
Освойте Java в онлайн-университете профессий Skypro. Изучите теорию в формате понятных текстовых шпаргалок и 40-минутных видеоуроков. Получите много практики в среде коммерческой разработки и два проекта в портфолио. Преподаватели — эксперты в области Java-разработки. Научат думать как разработчик, а не просто копировать и вставлять код.