Spec-Zone .ru
спецификации, руководства, описания, API
След: Изучение Языка Java
Урок: Основы Языка
Раздел: Переменные
Массивы
Домашняя страница > Изучение Языка Java > Основы языка

Массивы

Массив является контейнерным объектом, который содержит постоянное число значений единственного типа. Длина массива устанавливается, когда массив создается. После создания фиксируется его длина. Вы уже видели пример массивов, в main метод "Привет Мир!" приложение. Этот раздел обсуждает массивы более подробно.

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

Массив десяти элементов


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

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


class ArrayDemo {
    public static void main(String[] args) {
        // declares an array of integers
        int[] anArray;

        // allocates memory for 10 integers
        anArray = new int[10];
           
        // initialize first element
        anArray[0] = 100;
        // initialize second element
        anArray[1] = 200;
        // etc.
        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("Element at index 0: "
                           + anArray[0]);
        System.out.println("Element at index 1: "
                           + anArray[1]);
        System.out.println("Element at index 2: "
                           + anArray[2]);
        System.out.println("Element at index 3: "
                           + anArray[3]);
        System.out.println("Element at index 4: "
                           + anArray[4]);
        System.out.println("Element at index 5: "
                           + anArray[5]);
        System.out.println("Element at index 6: "
                           + anArray[6]);
        System.out.println("Element at index 7: "
                           + anArray[7]);
        System.out.println("Element at index 8: "
                           + anArray[8]);
        System.out.println("Element at index 9: "
                           + anArray[9]);
    }
} 

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

Element at index 0: 100
Element at index 1: 200
Element at index 2: 300
Element at index 3: 400
Element at index 4: 500
Element at index 5: 600
Element at index 6: 700
Element at index 7: 800
Element at index 8: 900
Element at index 9: 1000

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

Объявление, что Переменная Обращается к Массиву

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

// declares an array of integers
int[] anArray;

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

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

byte[] anArrayOfBytes;
short[] anArrayOfShorts;
long[] anArrayOfLongs;
float[] anArrayOfFloats;
double[] anArrayOfDoubles;
boolean[] anArrayOfBooleans;
char[] anArrayOfChars;
String[] anArrayOfStrings;

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

// this form is discouraged
float anArrayOfFloats[];

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

Создание, Инициализируя, и Получая доступ к Массиву

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

// create an array of integers
anArray = new int[10];

Если бы этот оператор отсутствовал, то компилятор напечатал бы ошибку как следующий, и компиляция перестала бы работать:

ArrayDemo.java:4: Variable anArray may not have been initialized.

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

anArray[0] = 100; // initialize first element
anArray[1] = 200; // initialize second element
anArray[2] = 300; // etc.

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

System.out.println("Element 1 at index 0: " + anArray[0]);
System.out.println("Element 2 at index 1: " + anArray[1]);
System.out.println("Element 3 at index 2: " + anArray[2]);

Альтернативно, можно использовать синтаксис ярлыка, чтобы создать и инициализировать массив:

int[] anArray = { 
    100, 200, 300,
    400, 500, 600, 
    700, 800, 900, 1000
};

Здесь длина массива определяется числом значений, обеспеченных между {и}.

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

В языке программирования Java многомерный массив является просто массивом, компоненты которого являются самостоятельно массивами. Это непохоже на массивы в C или ФОРТРАНе. Последствие этого - то, что строкам позволяют измениться по длине, как показано по следующему MultiDimArrayDemoпрограмма:

class MultiDimArrayDemo {
    public static void main(String[] args) {
        String[][] names = {
            {"Mr. ", "Mrs. ", "Ms. "},
            {"Smith", "Jones"}
        };
        // Mr. Smith
        System.out.println(names[0][0] + names[1][0]);
        // Ms. Jones
        System.out.println(names[0][2] + names[1][1]);
    }
}

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

Mr. Smith
Ms. Jones

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

 System.out.println(anArray.length);

напечатает размер массива к стандартному выводу.

Копирующие Массивы

System class имеет arraycopy метод, который можно использовать, чтобы эффективно скопировать данные с одного массива в другого:

public static void arraycopy(Object src, int srcPos,
                             Object dest, int destPos, int length)

Два Object параметры определяют массив, чтобы скопировать с и массив, чтобы скопировать в. Три int параметры определяют стартовую позицию в исходном массиве, стартовую позицию в целевом массиве, и число элементов массива, чтобы скопировать.

Следующая программа, ArrayCopyDemo, объявляет массив char элементы, произнося слово по буквам "decaffeinated". Это использует arraycopy скопировать подпоследовательность компонентов массива во второй массив:


class ArrayCopyDemo {
    public static void main(String[] args) {
        char[] copyFrom = { 'd', 'e', 'c', 'a', 'f', 'f', 'e',
			    'i', 'n', 'a', 't', 'e', 'd' };
        char[] copyTo = new char[7];

        System.arraycopy(copyFrom, 2, copyTo, 0, 7);
        System.out.println(new String(copyTo));
    }
}

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

caffein

Проблемы с примерами? Попытайтесь Компилировать и Выполнить Примеры: FAQ.
Жалобы? Поздравление? Предложения? Дайте нам свою обратную связь.

Предыдущая страница: Примитивные Типы данных
Следующая страница: Сводка Переменных