Зарегистрируйтесь для доступа к 15+ бесплатным курсам по программированию с тренажером

Массивы Java: Core

Видео может быть заблокировано из-за расширений браузера. В статье вы найдете решение этой проблемы.

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

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

// Создание массива целых чисел длинной 5
// Длинна массива — количество элементов, под который рассчитан массив
int[] arr = new int[5];

// Создание массива строк длинной 10
String arrOfStr[] = new String[10];

// Объявление массива
int[] arr2;
arr2 = new int[8];

Инициализация массива и доступ к элементам массива

Инициализация — это заполнение массива конкретными значениями. Доступ к элементам массива (для записи в него значения, вывода на экран или других операций) происходит по его индексу. Индексация в массиве начинается с нуля

// Запись значений в массив

int[] = new int[3];
// Начинаем с нуля
arr[0] = 1;
arr[1] = 3;
arr[2] = 5;
arr[3] = 9; // Ошибка!

String[] words = new String[3];
worsd[0] = "Hello";
words[1] = ",";
words[2] = "world";

// Вывод на экран элементов массива
System.out.println("Первый элемент: " + arr[0]); //=> "Первый элемент: 1"
System.out.println("Второй элемент: " + arr[1]); //=> "Второй элемент: 3"
System.out.println("Третий элемент: " + arr[2]); //=> "Третий элемент: 5"

// Инициализацию можно совместить с объявлением и созданием массива
int[] arr = {1, 6, 2, 3, 4, 5, 6};

System.out.println("Первый элемент: " + arr[0]); //=> "Первый элемент: 1"
System.out.println("Третий элемент: " + arr[2]); //=> "Третий элемент: 2"

Изменение элементов массива

String[] names = new String[2];

System.out.println("Первый элемент names: " + names[0]);
// => "Первый элемент names: null"

names[0] = "Yakovlev Egor";
System.out.println("Снова печатаем первый элемент names: " + names[0]);
// => "Снова печатаем первый элемент names: Yakovlev Egor"

names[0] = "Ivanov Ivan";
System.out.println("И снова печатаем первый элемент names: " + names[0]);
// => "И снова печатаем первый элемент names: Ivanov Ivan"

// final для массивов

final int[] numbers = new int[2];
numbers[0] = 1;
numbers[1] = 2;

System.out.println(numbers[0]); //=> 1

numbers[0] = 3;
numbers[1] = 4;

System.out.println(numbers[0]); //=> 3

Работа с массивом

// Длинна массива
int length = arr.length;

String[] names = new String[5];
names[0] = "Иванов Иван Иванович";
names[1] = "Егоров Егор Егорович";
names[2] = "Яковлев Яков Яковлевич";
names[3] = "Сергеев Сергей Сергеевич";
names[4] = "Марьева Мария Александровна";

// Печать элементов массива в цикле

// При помощи цикла for
for (int i = 0; i < names.length; i++) {
    System.out.println("Человек под номером " + i + " : " + names[i]);
}

// Для массивов удобно использовать цикл for of,
// если нужно перебрать весь массив
for (String name: names) {
    System.out.println(name);
}

// Получение строкового представления массива

int[] numbers = new int[3];
numbers[0] = 1;
numbers[1] = 2;
numbers[2] = 3;
System.out.println(Arrays.toString(numbers)); // => [1, 2, 3]

// Заполнение массива

int[] arr2 = new int[3];
Arrays.fill(arr2, 5);
System.out.println(Arrays.toString(numbers)); // => [5, 5, 5]

// Заполнение массива в цикле
int[] arr3 = new int[4];

for (int i = 0; i < arr3.length; i++) {
    arr3[i] = i;
}
System.out.println(Arrays.toString(arr3)); // => [0, 1, 2, 3]

Передача массива в метод и возврат массива

// Массив как возвращаемое значение

static String[] getFilledClassList() {
    String[] students = new String[3];
    students[0] = "Петров Петр";
    students[1] = "Иванов Иван";
    students[2] = "Сергеев Сергей";
    return students;
}

String[] students = getFilledClassList();
System.out.println(students[1]); // => "Иванов Иван"

// Массив как аргумент метода

static double getAvgTemperature(double[] temperatures) {
    double result = .0;
    for (double temperature: temperatures) {
        result += temperature;
    }
    return result / temperatures.length;
}

double[] temperatures = new double[5];
temperatures[0] = -1.5;
temperatures[1] = -10.1;
temperatures[2] = 0.3;
temperatures[3] = 10.2;
temperatures[4] = 25.5;

double avgTemperature = getAvgTemperature(temperatures);
System.out.println(avgTemperature); //=> 2.92

Многомерные массивы

// Создание двумерного массива

int[][] table = new int[2][2];

// Заполнение массива

table[0][0] = 1;
table[0][1] = 2;
table[1][0] = 3;
table[1][1] = 4;

int[][] arr = new int[2][];
arr[0] = new int[6];
arr[1] = new int[8];
arr[0][4] = 1;

// Изменение элементов массива

table[0][0] = -1;
System.out.println(table[0][0]); //=> -1

// Перебор многомерного массива в цикле for

for (int i = 0; i < table.length; i++) {
    for (int k = 0; k < table[i].length; k++) {
        System.out.println("i = " + i + " k = " + k + " => " + table[i][k]);
    }
}

// Перебор многомерного массива в цикле for of

for (int[] arr: table) {
    for (int a: arr) {
        System.out.println(a);
    }
}

// Трехмерный массив

int[][][] array3d = new int[1][2][2];

array3d[0][0][0] = 1;
array3d[0][0][1] = 2;
array3d[0][1][0] = 3;
array3d[0][1][1] = 4;

for (int[][] arr2d: array3d) {
    for (int[] arr: arr2d) {
        for (int a: arr) {
            System.out.println(a);
        }
    }
}

Аватары экспертов Хекслета

Остались вопросы? Задайте их в разделе «Обсуждение»

Вам ответят команда поддержки Хекслета или другие студенты.

Ошибки, сложный материал, вопросы >
Нашли опечатку или неточность?

Выделите текст, нажмите ctrl + enter и отправьте его нам. В течение нескольких дней мы исправим ошибку или улучшим формулировку.

Что-то не получается или материал кажется сложным?

Загляните в раздел «Обсуждение»:

  • задайте вопрос. Вы быстрее справитесь с трудностями и прокачаете навык постановки правильных вопросов, что пригодится и в учёбе, и в работе программистом;
  • расскажите о своих впечатлениях. Если курс слишком сложный, подробный отзыв поможет нам сделать его лучше;
  • изучите вопросы других учеников и ответы на них. Это база знаний, которой можно и нужно пользоваться.

Об обучении на Хекслете

Для полного доступа к курсу нужен базовый план

Базовый план откроет полный доступ ко всем курсам, упражнениям и урокам Хекслета, проектам и пожизненный доступ к теории пройденных уроков. Подписку можно отменить в любой момент.

Получить доступ
900
упражнений
2000+
часов теории
3200
тестов

Открыть доступ

Курсы программирования для новичков и опытных разработчиков. Начните обучение бесплатно.

  • 130 курсов, 2000+ часов теории
  • 900 практических заданий в браузере
  • 360 000 студентов
Даю согласие на обработку персональных данных, соглашаюсь с «Политикой конфиденциальности» и «Условиями оказания услуг»

Наши выпускники работают в компаниях:

Логотип компании Альфа Банк
Логотип компании Aviasales
Логотип компании Yandex
Логотип компании Tinkoff

Используйте Хекслет по максимуму!

  • Задавайте вопросы по уроку
  • Проверяйте знания в квизах
  • Проходите практику прямо в браузере
  • Отслеживайте свой прогресс

Зарегистрируйтесь или войдите в свой аккаунт

Даю согласие на обработку персональных данных, соглашаюсь с «Политикой конфиденциальности» и «Условиями оказания услуг»

Изображение Тото

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