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

User Rating: 0 / 5

Сегодня мы посмотрим на пример работы с массивами в Java. Массив - это выделенная область памяти в виде последовательных "ячеек", в которых хранятся значения того типа, с которым объявлен массив. Доступ к массиву производится по индексу, который начинается с 0. Т.е. если у нас есть целочисленный массив a, состоящий из 10 элементов, то доступ к первому элементу осуществляется через a[0], ко второму - через a[1], к последнему - через a[9].

Ниже небольшая программа ArraysExample на Java, которая демонстрирует возможности определения и инициализации целочисленных массивов типа int:

 

package ru.allineed.samples.corejava.arrays;

public class ArraysExample {
    public static void main(String[] args) {
        int[] a1 = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
        int a2[] = {-1, 22, 37};

        for (int i = 0; i < a1.length; i++) {
            System.out.print((i > 0 ? " " : "") + a1[i]);
        }
        System.out.println();

        for (int i = 0; i < a2.length; i++) {
            System.out.print((i > 0 ? " " : "") + a2[i]);
        }
        System.out.println();

        int[] a3 = new int[a1.length];
        for (int i = 0; i < a3.length; i++) {
            a3[i] = i * (i + 1);
            System.out.print((i > 0 ? " " : "") + a3[i]);
        }
    }
}

Первые два массива a1, a2 инициализированы статически с указанием их значений. Память под третий массив a3 выделяется динамически через оператор new и размером, равным размеру массива a1 за счёт указания в квадратных скобках a1.length. Расчёт значений для элементов массива a3 производится прямо в цикле по его элементам - как видим очередному элементу присваиваем значение индекса, умноженного на выражение (индекс_элемента + 1) - т.е. a3[i] = i * (i + 1).

При запуске программы на консоль будут выведены элементы всех трёх массивов на отдельных строках:

1 2 3 4 5 6 7 8 9 10
-1 22 37
0 2 6 12 20 30 42 56 72 90
Process finished with exit code 0

В примере выше был использован одномерный массив типа int. В Java также есть и возможность задания многомерных массивов. Давайте посмотрим на пример:

// статическое определение элементов двумерного массива:
int[][] b = {{1, 2}, {3, 4}, {5, 6}};
// можно также динамически выделить память под массив, не определяя его элементы сразу:
int[][] b = new int[10][10];

Из отличий - дополнительная пара квадратных скобок и отдельный уровень вложенности с фигурными скобками внутри внешних фигурных скобок - в случае статического определения массива. В первой строке примера можно сказать, что мы задали массив int[3][2], т.е. для доступа, например, к элементу 5 этого двумерного массива, нужно будет написать b[2][0].

Двумерный массив ещё называют матрицей, он может быть представлен в виде таблицы, где первый индекс указывает на номер строки, а второй индекс указывает на номер столбца. Это упрощает визуальное восприятие того, как расположены элементы матрицы. Например:

// 1  2
// 3  4
// 5  6

Если выписать все элементы матрицы таким образом, становится понятно, почему для получения элемента 5 используется запись b[2][0] - поскольку нумерация индексов для конкретной размерности массива начинается с 0, то 3-я строка соответствует индексу 2, а 1-й столбец соответствует индексу 0, поэтому это именно b[2][0], а не b[3][1], как может показаться для тех, кто не привык, что нумерация диапазонов начинается с нуля.

Надеюсь, что эта короткая статья дала общее понимание того, как использовать одномерные и многомерные массивы в Java. Если остались какие-то вопросы, напишите их в комментариях к статье.

Яндекс.Метрика