Массивы

 

Начнем сразу с примеров. Вот пример, в котором мы заводим массив из 3-х целых чисел, в каждое из которых мы записываем случайное целое число от 0 до 9 и затем выводим все числа на экран:

class Test{

public static void main(String [] args)

{

int [] k;

k=new int [3];

for(int i=0; i<3; i++)

{

k[i]=(int)(10*Math.random());

System.out.println(k[i]);

}

}

}

 

В этом примере мы завели массив k за два этапа - сначала мы объявили переменную типа массив целых чисел:

...

int [] k;

 

и затем мы определили массив (т. е. указали, сколько конкретно элементов в нем содержится):

...

k=new int [3];

 

Объявление массива можно сделать и другим способом:

...

int k[];

 

Т. е. квадратные скобочки можно ставить и так, и так. В общем-то особой разницы нет, и скобки можно ставить там, где удобнее в конкретной ситуации. Вот небольшой пример на два эти способа:

...

int n, k[]; //n - целое, k - массив из целых

int[] n, k; //n и k - массивы из целых

 

Два этапа для массива можно объединить:

...

int [] k = new int [3];

 

Нумерация элементов массива, как и в других C/C++-подобных языках, начинается с нуля.

 

Задание начальных элементов для массива можно совместить с его объявлением:

...

double[] d = {3.14, -44.43, 9.084};

 

В этом примере мы завели массив их трех вещественных чисел. Обратите внимание, что в этом случае можно в квадратных скобках ничего не писать.

 

Теперь рассмотрим двумерные массивы. Опять же начнем с примера:

class Test{

public static void main(String [] args)

{

int [][] k = {{3, 4, -44}, {-2, 8}};

System.out.println(k[0][2]);

System.out.println(k[1][1]);

}

}

 

В этом фрагменте мы заводим двумерный массив (так как у на две пару квадратных скобок) и тут же его инициализируем. Наш массив фактически представляет из себя массив массивов, т. е. в нашем массиве в качестве элементов содержаться два других одномерных массива - в одном из них три элемента, и в другом - два. Обратите внимание, что в Java массивы не обязательно "прямоугольные".

 

Точно также, как и для одномерных массивов, для многомерных существуют и другие способы их задания:

int [][] k;

k=new int[2][];

k[0]=new int[]{3, 4, -44};

k[1]=new int[]{-2, 8};

 

Также эквивалентны следующие объявления массивов:

...

double[][] d;

...

double[] d[];

...

double d[][];

 

Массивы могут участвовать в операциях присваивания:

class Test{

public static void main(String [] args)

{

int [][] k = {{3, 4, -44}, {-2, 8}};

int[][] k1;

k1=k; //k1 теперь ссылается на точ же массив, что и k

System.out.println(k1[0][2]);

System.out.println(k1[1][1]);

}

}

 

Указанный фрагмент выведет на экран -44 и 8.

 

Массивы в Java задаются динамически. Это в частности означает, что мы можем менять их размеры в процессе работы программы:

int [] k={3, 4};

System.out.println(k[1]);

k=new int[]{2, 6, -55};

System.out.println(k[2]);

 

В указанном фраменте в массиве k сначала 2 элемента, а затем - 3.