Массивы в Java - шпаргалка для новичков
Прочитав эту статью вы узнаете что такое массивы в Java и как работать с ними.
Если программе необходимо работать с несколькими значениями, имеющими одинаковый тип, можно объявить переменную для каждого числа. К примеру, программа, которая выводит числа в лотерее:
int lotteryNumber1 = 16;
int lotteryNumber2 = 32;
int lotteryNumber3 = 12;
int lotteryNumber4 = 23;
int lotteryNumber5 = 33;
int lotteryNumber6 = 20;
Но есть более элегантный способ работать со значениями – их можно просто сгруппировать при помощи массива.
Массив – это контейнер, в котором содержится определённое количество значений конкретного типа данных. В приведённом выше примере числа из лотереи можно сгруппировать в массив int:
int[] lotteryNumbers = {16,32,12,23,33,20};
Расценивайте массив как ряд коробок. Количество коробок в массиве изменить нельзя. В каждой коробке находится значение того же типа данных, что и в остальных коробках. Можно увидеть значение внутри или заменить содержимое коробки другим значением. В контексте массивов такие «коробки» называются элементами.
Массивы в Java - объявление и инициализация массива Java
Оператор, отвечающий за объявление массива Java, похож на любую другую переменную. Он содержит тип данных, после которого следует название массива. Единственное отличие заключается в использовании квадратных скобок рядом с типом данных:
int[] intArray;
float[] floatArray;
char[] charArray;
Приведённые выше операторы объявления сообщают компилятору, что intArrayvariable – это массив целых чисел, floatArrayis – массив чисел с плавающей запятой, а charArrayis – массив символов.
Как и другие переменные, их нельзя использовать до инициализации и установки значения. В случае с массивом указание значения должно определять размер массива:
intArray = new int[10];
Число внутри скобок указывает, сколько элементов содержится в массиве. Приведённый выше код создает массив целых чисел, состоящий из 10 элементов.
Объявление и установку размера массива можно сделать в одном выражении:
float[] floatArray = new float[10];
Массивы не ограничиваются примитивными типами данных. Также можно создавать массив объектов Java (или строк):
String[] names = new String[5];
Применение массивов
Как только массив инициализирован, можно задавать элементам значения при помощи индекса. Он определяет позицию каждого элемента внутри массива. Первый элемент занимает позицию 0, второй – 1 и так далее.
Важно отметить, что индекс первого элемента – 0. Обычно путаница возникает тогда, когда начинаешь думать, что раз в массиве 10 элементов, то их индексы будут перечисляться с 1 до 10. Но на самом деле счет идет от 0 до 9. Например, возвращаясь к примеру с лотерей, можно создать массив из 6 элементов, и задать им числа из лотереи:
int[] lotteryNumbers = new int[6];
lotteryNumbers[0] = 16;
lotteryNumbers[1] = 32;
lotteryNumbers[2] = 12;
lotteryNumbers[3] = 23;
lotteryNumbers[4] = 33;
lotteryNumbers[5] = 20;
Сокращённый способ заполнения массива:
int[] lotteryNumbers = {16,32,12,23,33,20};
String[] names = {"John", "James", "Julian", "Jack", "Jonathon"};
Значения каждого элемента перечисляются внутри фигурных скобок. Порядок значений определяет, какое значение будет у каждого элемента, начиная с нулевой позиции.
Чтобы получить значение элемента, используется его индекс:
System.out.println("The value of the first element is " + lotteryNumbers[0]);
Как определяется длина массива Java? Чтобы узнать длину массива, в Java используется поле length:
System.out.println("The lotteryNumbers array has " + lotteryNumbers.length + " elements");
Примечание: распространена ошибка при использовании метода length, когда значение length используется как индексная позиция. Это всегда выдаст ошибку, так как индексные позиции массива 0, в то время как позиция length – 1.
Многомерные массивы
До сих пор мы говорили лишь об одномерных массивах. Но у массивов может быть и больше одного измерения. Многомерные массивы представляют собой контейнеры, внутри которых находится сразу несколько массивов:
int[][] lotteryNumbers = {{16,32,12,23,33,20},{34,40,3,11,33,24}};
Индекс многомерных массивов содержит два числа:
System.out.println("The value of element 1,4 is " + lotteryNumbers[1][4]);
При этом длина массивов, находящихся внутри многомерного массива Java, не обаятельно должна быть одинаковой:
String[][] names = new String[5][7];
Копируем массив
Чтобы скопировать массив, проще всего использовать arraycopymethod из класса System. Метод принимает пять параметров: исходный массив, позиция в индексе (с которой необходимо начать копирование элементов), новый массив, позиция в индексе для начала вставки и количество копируемых элементов:
public static void arraycopy (Object src, int srcPos, Object dest, int destPos, int length)
В примере мы создаём новый массив, в котором содержатся последние четыре элемента из массива int:
int[] lotteryNumbers = {16,32,12,23,33,20};
int[] newArrayNumbers = new int[4];
System.arraycopy(lotteryNumbers, 2, newArrayNumbers, 0, 4);
Так как массивы имеют фиксированную длину, arraycopymethod позволяет удобно изменять длину массива.
Чтобы лучше познакомиться с массивами, можете прочитать о том, как управлять массивами при помощи класса Arrays. А также о том как создавать динамический массив Java (то есть, массивов с нефиксированным количеством элементов) при помощи класса ArrayList.