img
img
07 июня 2022
17 июня 2022
8 мин
170

Что такое массивы в Java и как с ними работать

Массив — это набор однотипных элементов, упорядоченных по номерам.

img

В жизни мы часто сталкиваемся с массивами — например, жилыми или лесными. То есть совокупностью множества однородных предметов. Чтобы разделять элементы, им иногда присваиваются номера: в жилом массиве после названия улицы идет номер дома, корпуса.

Это справедливо и для массивов в программировании — набора однотипных элементов, расположенных в памяти друг за другом. 

Зачем нужны массивы в Java

Без массивов, чтобы работать с набором однотипных данных, для каждого элемента объявляли бы отдельную переменную. Каждый раз устанавливали бы правила именования таких переменных, чтобы в них не запутаться. Запоминали бы, сколько переменных уже создали. 

При этом компилятору нужно было бы понимать, что с набором объявленных в разных местах переменных вы хотите работать как с единым целым. Располагать их в памяти рядом друг с другом, чтобы эффективно записывать и читать значения. Массивы же упрощают такое количество работы.

Объявление массива в Java

Чтобы начать работу с массивом, первым делом его нужно объявить — как и обычную переменную. Это выглядит так:


double[] myFancyArray; 

Идущие подряд открывающая и закрывающая квадратные скобки сообщают компилятору, что переменная — массив. Тип элементов задает стоящий перед скобками оператор. Это может быть любой из поддерживаемых в Java примитивных типов данных, например int, byte, char, название класса или перечисления — enum. В нашем примере массив будет состоять из вещественных чисел.

Допустима форма объявления, где скобки ставят после названия переменной:


double myFancyArray[];

Такая форма объявления массива пришла в Java из языка C, но ее употребляют редко.

Создание массива в Java

После объявления массива его нужно создать. На этом этапе сообщают компилятору необходимый размер. С точки зрения компилятора Java-массив — это объект. Поэтому его, как и объект, создают при помощи ключевого слова new. Общий синтаксис:


new имя_массива[длина_массива];

Объявление и создание массива может быть описано одной строкой:


double[] myFancyArray = new double[5];

Или с помощью отдельных операторов:


double[] myFancyArray;

myFancyArray = new double[5];

Чтение и запись элементов

Массив — это пронумерованный набор. Доступ к каждому элементу осуществляют по его номеру (индексу). Нумерация элементов массива начинается с нуля, а не с единицы, поэтому первый элемент массива будет с индексом 0, а последний — «длина_массива — 1». 

Чтение и запись элементов

Нумерация элементов массива

Общий синтаксис оператора доступа к элементу массива:


имя_массива[индекс элемента]

Пример чтения значения элемента:


System.out.println(myFancyArray[3]);

Пример записи значения элемента:


myFancyArray[4] = 1.5;

Инициализация массива в Java

Чтобы выполнять действия, заполните массив нужными значениями — инициализируйте. Сделать это можно несколькими способами.

✔️ Поочередно записывать значения в каждый элемент массива:


myFancyArray[0] = 0.5;

myFancyArray[1] = 1.0;

myFancyArray[2] = 1.5;

myFancyArray[3] = 2.0;

✔️ С помощью цикла:


for (int i=0; i<5; i++) {

    myFancyArray[i] = i * 2;

}

✔️ Когда создаете массив:


double[] myFancyArray = new double[] {0.5, 1.0, 1.5, 2.0};

или без new:


double[] myFancyArray = {0.5, 1.0, 1.5, 2.0};

Длина массива

Не нужно указывать длину массива при инициализации в момент объявления. Компилятор выведет ее из количества значений в выражении.

❗ Важно: когда вы создадите массив, изменить длину уже не получится. Если захотите, чтобы массив был длиннее, придется создать новый и скопировать в него значения старого. Затем присвоить переменной значение нового массива. 

Немного упростит операцию статический метод 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 < myFancyArray.length; i++) {

    myFancyArray[i] = i * 2;

}

Вывод массива

Удобно пользоваться оператором цикла for:


String[] weekDays = {“Понедельник”, “Вторник”, “Среда”, “Четверг”, “Пятница”, “Суббота”, “Воскресенье”};

for (int i = 0; i < weekDays.length; i++) {

System.out.println(weekDays[i]);

}

В версиях Java после 1.6 доступен оператор foreach:


String[] weekDays = {“Понедельник”, “Вторник”, “Среда”, “Четверг”, “Пятница”, “Суббота”, “Воскресенье”};

for (String weekDay: weekDays) {

System.out.println(weekDay);

}

В Java после версии 1.8 появились Stream API — стримы, которые тоже упрощают работу. Преобразовать массив в стрим поможет статический метод stream в утилитарном классе Arrays.


String[] weekDays = {“Понедельник”, “Вторник”, “Среда”, “Четверг”, “Пятница”, “Суббота”, “Воскресенье”};

Arrays.stream(weekDays).forEach(weekDay ->

System.out.println(weekDay)

);

Вывод массива

Результат вывода массива

Одномерные и многомерные Java-массивы

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


double[][] myMatrixArray;

Такой массив называют двумерным, или матрицей. Простой же массив, где элемент — не другой массив, считают одномерным. Структуру двумерного массива можно представить в виде таблицы:

Одномерные и многомерные Java-массивы

Двумерный массив

Вы получите доступ к элементу такого массива, если укажете номер строки и столбца этой таблицы:


myMatrixArray[i][j] = 3.4;

i — номер строки, а j — номер столбца

При этом выражение myMatrixArray.length вернет количество строк в таблице. А с помощью выражения myMatrixArray[0].length получите количество столбцов в строке.

Объявляют двумерный массив, в котором элементы опять будут массивом, так:


double[][][] myCubeArray;

Такой массив называют трехмерным, или кубом. Для доступа к элементу укажите уже три индекса. 

Можно объявлять и четырех-, пяти- и десятимерные массивы. Максимальное количество измерений ограничено спецификацией Java — 255. Это объявление переменной выдаст ошибку компиляции:


double[][][][][][][][][][][][][][][][]

      [][][][][][][][][][][][][][][][]

      [][][][][][][][][][][][][][][][]

      [][][][][][][][][][][][][][][][]

      [][][][][][][][][][][][][][][][]

      [][][][][][][][][][][][][][][][]

      [][][][][][][][][][][][][][][][]

      [][][][][][][][][][][][][][][][]

      [][][][][][][][][][][][][][][][]

      [][][][][][][][][][][][][][][][]

      [][][][][][][][][][][][][][][][]

      [][][][][][][][][][][][][][][][]

      [][][][][][][][][][][][][][][][]

      [][][][][][][][][][][][][][][][]

      [][][][][][][][][][][][][][][][]

      [][][][][][][][][][][][][][][][] myUberArray;

Ошибка появится, потому что количество измерений объявленного массива равно 256.

Нарушение компиляции

Ошибка компиляции при попытке объявить массив, у которого слишком много измерений

Методы для работы с массивами

Стандартная библиотека Java предоставляет набор методов, которые помогают работать с массивами. Они представлены как статические методы в утилитарном классе Arrays.

🚀 Преобразование к строке

Чтобы вывести массив на печать, воспользуйтесь методом Arrays.toString(a). Он преобразует массив в строку со значениями всех элементов массива, разделенных запятой. Начало и конец будут обозначены квадратными скобками.

Пример:


int[] myArray = new int[] {4, 3, 5, 6};

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-разработки. Научат думать как разработчик, а не просто копировать и вставлять код.

img
Подпишитесь на рассылку, чтобы Не упустить что-нибудь новое
Просто и понятно о том, как получить новую профессию


    Дадим нужные знания и поможем получить работу!
    Регистрируйтесь на курс и учитесь у экспертов-практиков.
    Профессия
    за 11 месяцев
    Java-разработчик
    • Даем знания и навыки, которые помогут найти высокооплачиваемую работу
    • Прикрепляем наставника: он ответит на любые вопросы
    • Много практики в среде коммерческой разработки
    • Всего 10 часов в неделю
    3 489 ₽/мес.
    Ещё по теме
    Что такое Agile

    Agile — это группа гибких методов, чтобы улучшать продукт.

    20 июня 2022
    4 мин
    5 причин освоить Python

    Это универсальный и перспективный язык, который подходит новичкам.

    Как отбирают кандидатов в IT-компаниях

    IT-рекрутер обращает внимание на то, как вы мыслите и рассуждаете.

    5 причин научиться программировать на Java

    Этот язык постоянно развивается, но остается стабильным, на нём кодят уже 27 лет.

    Как работать со словарями в Python

    Словарь создают с помощью ключевого слова dict, синтаксиса языка.

    Каково быть тестировщиком: 4 истории о боли и радости

    Рассказы тестировщиков: какие ошибки они замечают в обычной жизни.

    Что такое Node.js и зачем ее изучать

    Node.js — платформа с открытым исходным кодом для работы с JavaScript.

    09 июня 2022
    5 мин
    Как написать тест-кейс

    Создавайте простые тест-кейсы и учитывайте интересы пользователя.

    06 июня 2022
    6 мин
    Мифы о программистах

    Есть стереотипы, что программисты — это мужчины, всемогущие хакеры и интроверты.

    17 мая 2022
    2 мин
    Код: что ты такое

    Код определяет внешний вид и внутреннюю логику программ, сайтов.

    17 мая 2022
    2 мин
    7 англоязычных подкастов для тех, кто хочет прокачаться в IT

    Про Python, frontend-разработку, мягкие навыки, работу над проектами.

    17 мая 2022
    3 мин
    6 ютуб-каналов для разработчиков

    Ответы на вопросы новичков, интервью успешных спецов, полезные советы.

    17 мая 2022
    2 мин
    Женщины в IT

    Достижения и цитаты шести героинь, которые не побоялись попробовать себя в IT.

    17 мая 2022
    2 мин
    Почему IT — сфера будущего

    Информационные технологии помогают бизнесу зарабатывать и упрощают жизнь.

    IT-компания — это не только Google

    Рассказываем про «Тинькофф», «Билайн» и другие компании.

    16 мая 2022
    2 мин
    Как составить и оформить баг-репорт

    Указывайте в отчете только одну ошибку, прикладывайте скрины, сообщения и коды.

    04 мая 2022
    6 мин
    Как работать со списками в Python

    Учимся добавлять и изменять элементы, объединять и копировать списки.

    02 мая 2022
    5 мин
    Цикл for в Java: что это, как с ним работать

    Конструкция, чтобы много раз выполнять один и тот же участок кода.

    Как работать с модулем JSON в Python

    JSON часто применяют, когда разрабатывают API и веб-приложения.

    25 апреля 2022
    9 мин
    Как IT-специалисту из России найти работу за рубежом в 2022 году

    Есть сервисы, платформы и телеграм-каналы с вакансиями по всему миру.

    21 апреля 2022
    6 мин
    Что такое HTML: основные теги

    С помощью HTML структурируют страницу на сайте, добавляют картинки, таблицы, списки.

    Как работает цикл for в Python

    Цикл for используют, когда количество повторов известно заранее.

    Комьюнити для разработчика

    Есть комьюнити на платформах, под эгидой компаний или самоорганизующиеся.

    07 апреля 2022
    6 мин
    Гайд: как определить, какое направление в IT тебе подходит

    Обязанности и зарплата аналитика, Python- и Java-разработчиков и не только.

    Правильное питание на удаленке. Почему это важно?

    Правильное питание — это не о жестких диетах и полном отказе от любимых продуктов.

    01 апреля 2022
    7 мин
    Как я нашла время на учебу, когда времени не было совсем

    Благодаря методу «круга-пирога» увидите свое время и возьмете его под контроль.

    9 причин, почему не получается внедрять полезные привычки

    Ищите мотивацию, хвалите себя, визуализируйте план и результат.

    Как больше успевать: зачем есть по одной лягушке в день и как справиться со слоном

    Лягушки — небольшие, но неприятные дела, слоны — долговременные задачи.

    Как поставить цель и не бросить на полпути

    Когда ставите цель, отталкивайтесь от проблемы и конкретизируйте решение.

    Кто такой менеджер проектов, чем занимается и как им стать

    Этот специалист контролирует все этапы проекта и приводит его к успеху.

    30 марта 2022
    8 мин
    Как не угробить здоровье на удаленке

    Советы всем удаленщикам — больше двигаться, делать зарядку, разминку для глаз.

    30 марта 2022
    9 мин
    Junior, Middle, Senior в разработке — кто есть кто и как перейти на уровень выше

    Junior зарабатывает от 40 000 ₽, Middle от 100 000 ₽, а Senior от 250 000 ₽ и выше.

    29 марта 2022
    12 мин
    Как банковская служащая в 32 года с нуля перешла в IT и в 40 открыла свою компанию по разработке онлайн-игр

    Совет от героини: сделайте первый шаг, дальше будет проще; учитесь и идите вперед.

    Пять приложений, чтобы не отвлекаться от учебы и работы

    Фишки и стоимость Forest, WaterDo, SleepTown, Alarmy, Pomodoro Timer Lite.

    29 марта 2022
    5 мин
    Язык SQL: что это такое и зачем он нужен

    SQL используют в банках, торговле, перевозках: везде, где много информации.

    29 марта 2022
    7 мин
    Как освоить c нуля IT-профессию и перейти на новую работу без опыта

    Сначала поставьте цель: выберите сферу и определите, кем видите себя через 10 лет.

    Словарь IT-сленга

    Термины разработки, Scrum, неформального общения, организационных процессов.

    29 марта 2022
    13 мин
    Подборка: 33 книги и подкаста для начинающих программистов

    Узнаете о работе программиста и поймете, как писать хороший код.

    28 марта 2022
    10 мин
    Хакнуть мозг: как современные знания помогают мозгу развиваться и учиться

    Мозг меняется всю жизнь. Мы можем на него влиять: изучать новое, развивать навыки.

    28 марта 2022
    8 мин
    Что такое CSS и как с ним работать

    С помощью CSS задают цвет, размеры, анимацию, адаптируют сайт под устройства.

    16 марта 2022
    9 мин
    css
    Как создать телеграм-бота на Python

    Python — самый популярный язык программирования в феврале 2022 года.

    16 марта 2022
    9 мин
    Какие профессии в IT подойдут гуманитарию

    Гуманитарию подойдут профессии тестировщика, веб-дизайнера и не только.

    15 марта 2022
    9 мин
    Frontend или backend: чем отличаются и какой вид разработки выбрать

    Фронтендер создает интерфейс продукта, бэкендер работает с серверной частью.

    15 марта 2022
    7 мин
    Кто такой Java-разработчик, чем занимается и как им стать

    Обязанности Java-разработчика — писать код, тестировать и улучшать его.

    15 марта 2022
    7 мин
    Что такое IT-сфера и почему она сейчас так популярна

    IT-отрасль привлекает удаленкой, карьерным ростом, высоким доходом.

    04 марта 2022
    7 мин
    it
    Как установить Python на компьютер и начать на нём писать

    Воспользуйтесь Google Colab, онлайн-интерпретаторами или скачайте Python.

    Postman: как пользоваться программой для тестирования API

    Бесплатный сервис позволяет писать тесты, поддерживает разные типы API.

    04 марта 2022
    6 мин
    api
    Google Colab: что это такое и как с ним работать

    Colab используют, чтобы создавать код на Python прямо в браузере.

    04 марта 2022
    4 мин
    Как перейти в разработчики из другой профессии

    Освоить новую профессию реально с нуля в любом возрасте, главное — мотивация.

    03 марта 2022
    8 мин
    Как помочь ребенку выбрать профессию

    Не выбирайте по принципу «чем проще, тем лучше» и уважайте желания ребенка.

    03 марта 2022
    7 мин
    Нужно ли высшее образование программисту: сравниваем все «за и «против»

    Важнее опыт и проекты в портфолио, но иногда высшее образование все-таки нужно.

    02 марта 2022
    5 мин
    Стоит ли переходить на удаленку: плюсы и минусы

    Сегодня удаленка доступна для разных сфер: ИТ, маркетинг, сервис, продажи.

    02 марта 2022
    6 мин
    Какой язык программирования выбрать новичку

    Выбирайте по уровню спроса у работодателей и направлению в программировании.

    24 февраля 2022
    7 мин
    Фильмы про программистов: лучшие фильмы и сериалы про компьютерных гениев

    20 фильмов и сериалов для тех, кому интересен мир информационных технологий.

    24 февраля 2022
    7 мин
    Фронтенд-разработчик: кто это такой и как им стать с нуля

    Frontend-разработчик создает внешнюю — пользовательскую часть веб-ресурса.

    24 февраля 2022
    8 мин
    Backend-разработчик: кто это такой и чем он занимается

    Backend-разработчик отвечает за внутреннюю — серверную сторону веб-ресурса.

    24 февраля 2022
    9 мин
    Что такое спринты в программировании и как их выполнять

    Спринты используют в долгих проектах и сложных продуктах.

    Как начать изучать Python

    Преимущества Python — понятный синтаксис и читаемость, готовые библиотеки.

    24 февраля 2022
    9 мин
    Jupyter Notebook: что это такое и как им пользоваться

    Jupyter-ноутбуки применяют для визуализации данных в big data и data science.

    24 февраля 2022
    7 мин
    Как развить soft skills

    Soft skills помогают развивать компетенции, осваивать новые тенденции в работе.

    24 февраля 2022
    11 мин
    Как начать изучать Java

    На Java разрабатывают всё: от приложений и ПО до технологий Big Data.

    kralbetbetturkeyikimislibahis1xbetm.infohipas.infohttps://www.wiibet.com/restbetcdn.com
    Вставить формулу как
    Блок
    Строка
    Дополнительные настройки
    Цвет формулы
    Цвет текста
    #333333
    Используйте LaTeX для набора формулы
    Предпросмотр
    \({}\)
    Формула не набрана
    Вставить