Spec-Zone .ru
спецификации, руководства, описания, API
|
Массив является контейнерным объектом, который содержит постоянное число значений единственного типа. Длина массива устанавливается, когда массив создается. После создания фиксируется его длина. Вы уже видели пример массивов, в main
метод "Привет Мир!" приложение. Этот раздел обсуждает массивы более подробно.
Массив десяти элементов
Каждый элемент в массиве вызывают элементом, и к каждому элементу получают доступ его числовым, индексируют. Как показано на вышеупомянутой иллюстрации, нумерация начинается 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