Язык с массив синтаксис объявление массива обращение к элементам массивов

Массив-это объект-контейнер. Который содержит фиксированное число значений одного типа. Длина массива устанавливается при его создании. После создания его длина фиксируется. Вы уже видели пример массивов в mainметоде приложения В этом разделе массивы рассматриваются более подробно.


Иллюстрация массива в виде 10 коробок с номерами от 0 до 9; индекс 0 указывает на первый элемент в массивеМассив из 10 элементов.

Каждый элемент в массиве называется элементом, и доступ к каждому элементу осуществляется по его числовому индексу. Как показано на предыдущем рисунке. Нумерация начинается с 0. Таким образом. Доступ к 9-му элементу будет осуществляться по индексу 8.

Следующая программа, ArrayDemo, создает массив целых чисел. Помещает некоторые значения в массив и выводит каждое значение на стандартный вывод.

класс ArrayDemo { public static void main(String[] args) { // объявляет массив целых чисел int[] anArray; // выделяет память для 10 целых чисел anArray = new int[10]; // инициализировать первый элемент anArray[0] = 100; // инициализировать второй элемент anArray[1] = 200; // и так далее anArray[2] = 300; anArray[3] = 400; anArray[4] = 500; anArray[5] = 600; anArray[6] = 700; anArray[7] = 800; anArray[8] = 900; anArray[9] = 1000; System.out.println(+ anArray[0]); System.out.println(+ anArray[1]); System.out.println(+ anArray[2]); System.out.println(+ anArray[3]); System.out.println(+ anArray[4]); System.out.println(+ anArray[5]); System.out.println(+ anArray[6]); System.out.println(+ anArray[7]); System.out.println(+ anArray[8]); System.out.println(

Выход из этой программы таков:

Элемент с индексом 0: 100 Элемент с индексом 1: 200 Элемент с индексом 2: 300 Элемент с индексом 3: 400 Элемент с индексом 4: 500 Элемент с индексом 5: 600 Элемент с индексом 6: 700 Элемент с индексом 7: 800 Элемент с индексом 8: 900 Элемент с индексом 9: 1000 

В реальной ситуации программирования вы, вероятно. Использовали бы одну из поддерживаемых циклических конструкций для итерации по каждому элементу массива. А не записывали бы каждую строку отдельно. Как в предыдущем примере. Однако пример ясно иллюстрирует синтаксис массива. Вы узнаете о различных циклических конструкциях (for, while, и do-while) в разделе потока управления.

Объявление переменной для ссылки на массив

Предыдущая программа объявляет массив (именованный anArray) со следующей строкой кода:

// объявляет массив целых чисел int[] anArray; 

Как и объявления переменных других типов. Объявление массива состоит из двух компонентов: типа массива и его имени. Тип массива записывается как type[], гдеtype-тип данных содержащихся в нем элементов; скобки-это специальные символы. Указывающие на то. Что эта переменная содержит массив. Размер массива не является частью его типа (именно поэтому скобки пусты). Имя массива может быть любым. При условии. Что оно следует правилам и соглашениям. Описанным ранее в разделе именование Раздел. Как и в случае с переменными других типов. Объявление фактически не создает массив; оно просто сообщает компилятору. Что эта переменная будет содержать массив указанного типа.

Аналогично можно объявлять массивы других типов:

byte[] anArrayOfBytes; короткие[] anArrayOfShorts; длинные[] anArrayOfLongs; float[] anArrayOfFloats; double[] anArrayOfDoubles; boolean[] anArrayOfBooleans; char[] anArrayOfChars; String[] anArrayOfStrings; 

Вы также можете поместить скобки после имени массива:

// эта форма не рекомендуется float anArrayOfFloats[]; 

Однако соглашение не поощряет эту форму; скобки идентифицируют тип массива и должны появляться вместе с обозначением типа.

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

Один из способов создания массива — с newпомощью оператора. Следующий оператор в ArrayDemoпрограмме выделяет массив с достаточным объемом памяти для 10 целочисленных элементов и присваивает массив anArrayпеременной.

// создать массив целых чисел anArray = new int[10]; 

Если этот оператор отсутствует. То компилятор выводит ошибку. Подобную следующей. И компиляция завершается неудачей:

ArrayDemo.java:4: Переменная anArray, возможно. Не была инициализирована. 

Следующие несколько строк присваивают значения каждому элементу массива:

anArray[0] = 100; // инициализировать первый элемент anArray[1] = 200; // инициализировать второй элемент anArray[2] = 300; // и так далее 

Доступ к каждому элементу массива осуществляется по его числовому индексу:

System.out.println(System.out.println(System.out.println(

Кроме того. Вы можете использовать синтаксис ярлыка для создания и инициализации массива:

int[] anArray = { 100, 200, 300, 400, 500, 600, 

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

Вы также можете объявить массив массивов (также известный как многомерный массив). Используя два или более наборов скобок. Таких как String[][] names. Поэтому к каждому элементу должно быть обращено соответствующее число значений индекса.

В языке программирования Java многомерный массив — это массив. Компоненты которого сами являются массивами. Это не похоже на массивы в Си или Фортране. Следствием этого является то. Что строки могут варьироваться по длине. Как показано в следующей MultiDimArrayDemoпрограмме:

class MultiDimArrayDemo { public static void main(String[] args) { String[][] names = { // Мистер Смит System.out.println(имена[0][0] + имена[1][0]); // Мисс Джонс 

Выход из этой программы таков:

Мистер Смит Мисс Джонс 

Наконец. Вы можете использовать встроенное lengthсвойство для определения размера любого массива. Следующий код выводит размер массива на стандартный вывод:

 System.out.println(anArray.length); 

Копирование Массивов

В Systemэтом классе есть arraycopyметод который можно использовать для эффективного копирования данных из одного массива в другой:

public static void arraycopy(Object src. Int srcPos. Object dest. Int destPos. Int length) 

Эти два Objectаргумента определяют массив для копирования и массив для копирования . Эти три intаргумента задают начальную позицию в исходном массиве. Начальную позицию в целевом массиве и количество копируемых элементов массива.

Следующая программа, ArrayCopyDemo, объявляет массив Stringэлементов. Он использует этот System.arraycopyметод для копирования подпоследовательности компонентов массива во второй массив:

 класс ArrayCopyDemo { public static void main(String[] args) { String[] copyFrom = { String[] CopyTo = новая строка[7]; System.arraycopy(copyFrom, 2, CopyTo, 0, 7); для (струнного) кофе : CopyTo) { 

Выход из этой программы таков:

Cappuccino Corretto Cortado Doppio Espresso Frappucino Freddo 

Манипуляции массивом

Массивы-это мощная и полезная концепция. Используемая в программировании. Java SE предоставляет методы для выполнения некоторых из наиболее распространенных манипуляций. Связанных с массивами. Например, в ArrayCopyDemoпримере используется arraycopyметод Systemкласса вместо того. Чтобы вручную перебирать элементы исходного массива и помещать каждый из них в целевой массив. Это выполняется за кулисами. Позволяя разработчику использовать только одну строку кода для вызова метода.

Для вашего удобства Java SE предоставляет несколько методов для выполнения манипуляций с массивами (общие задачи. Такие как копирование. Сортировка и поиск массивов) в java.util.Arraysклассе. Например, предыдущий пример можно изменить. Чтобы использовать copyOfRangeметод java.util.Arraysкласса. Как вы можете видеть в ArrayCopyOfDemoпримере. Разница в том. Что использование copyOfRangeметода не требует создания целевого массива перед вызовом метода. Поскольку целевой массив возвращается методом:

класс ArrayCopyOfDemo { public static void main(String[] args) { String[] copyFrom = { String[] CopyTo = java.util.Массивы.copyOfRange(copyFrom, 2, 9); for (String coffee : CopyTo) { 

Как вы можете видеть. Выход из этой программы тот же. Хотя она требует меньше строк кода. Обратите внимание. Что второй параметр copyOfRangeметода является начальным индексом диапазона. Подлежащего копированию. Включительно. В то время как третий параметр является конечным индексом диапазона. Подлежащего копированию, исключительно. В этом примере диапазон. Который будет скопирован. Не включает элемент массива с индексом 9 (который содержит строку Lungo).

Некоторые другие полезные операции. Предоставляемые методами в java.util.Arraysклассе:

  • Поиск в массиве определенного значения для получения индекса. В котором он находится (binarySearchметод).

  • Сравнение двух массивов. Чтобы определить. Равны они или нет (equalsметод).

  • Заполнение массива для размещения определенного значения в каждом индексе (fillметод).

  • Сортировка массива в порядке возрастания. Это может быть сделано либо последовательно. Используя sortметод. Либо одновременно. Используя parallelSortметод. Введенный в Java SE 8. Параллельная сортировка больших массивов на многопроцессорных системах происходит быстрее. Чем последовательная сортировка массивов.

  • Создание потока. Который использует массив в качестве источника (streamметод). Например, следующая инструкция выводит содержимое copyToмассива таким же образом. Как и в предыдущем примере:

    java.util.

    Дополнительные сведения о потоках см. в разделе Агрегатные операции.

  • Преобразование массива в строку. toStringМетод преобразует каждый элемент массива в строку. Разделяет их запятыми. А затем окружает скобками. Например, следующая инструкция преобразует copyToмассив в строку и выводит ее на печать:

    System.out.println(java.util.Arrays.toString(CopyTo)); 

    Этот оператор печатает следующее:

    [Cappuccino. Corretto, Cortado. Doppio, Espresso. Frappucino, Freddo]