Выполнение этого фрагмента кода дает следующий результат: 1 1 2 4 3 9 4 16 5 25 6 36 7 49 8 64 9 81 10 100 Альтернативный синтаксис объявления массивов
Помимо рассмотренной выше общей формы, для объявления массива можно также пользоваться следующей синтаксической конструкцией: тип [ ] имя_переменной;
Здесь квадратные скобки указываются после спецификатора типа, а не имени переменной. Поэтому следующие два объявления равнозначны: int counter[] = new int[3]; int[] counter = new int[3];
Равнозначными являются и приведенные ниже строки кода. char table[] [] = new char[3] [4]; char[][] table = new char [3] [4];
Альтернативный синтаксис объявления массива оказывается удобным в тех случаях, если требуется объявить несколько массивов одного типа. Например: int[] nums, nums2, nums3; // создать три массива
В этом объявлении создаются три переменные, ссылающиеся на массивы типа int. Тот же результат можно получить с помощью следующей строки кода: int nums[], nums2[], nums3[]; // создать три массива
Альтернативный синтаксис объявления массива оказывается удобным и в тех случаях, если в качестве типа, возвращаемого методом, требуется указать массив. Например: int[] someMeth { ...
В этой строке кода объявляется метод someMeth , возвращающий целочисленный массив.
Обе рассмотренные выше формы объявления массивов широко распространены в программировании на Java, и поэтому они употребляются в примерах, представленных в этой книге. Присваивание ссылок на массивы
Присваивание значения одной переменной ссылки на массив другой переменной, по существу, означает, что обе переменные ссылаются на один и тот же массив, и в этом отношении массивы ничем не отличаются от любых других объектов. Такое присваивание не приводит ни к созданию копии массива, ни к копированию содержимого одного массива в другой. В качестве примера рассмотрим следующую программу: // Присваивание ссылок на массивы, class AssignARef { public static void main(String args[]) { int i; int numsl[] = new int[10]; int nums2[] = new int[10]; for(i=0; i < 10; i++) nums1[i] = i; for(i=0; i < 10; i++) nums2[i] = -i; System.out.print("Here is numsl: "); for(i=0; i < 10; i++) System.out.print(numsl[i] + " "); System.out.println; System.out.print("Here is nums2: "); for(i=0; i < 10; i++) System.out.print(nums2[i] + " "); System.out.println; // присвоить ссылку на массив // Теперь переменные nums2 и numsl ссылаются //на один и тот же массив. nums2 = numsl; System.out.print("Here is nums2 after assignment: "); for(i=0; i < 10; i++) System.out.print(nums2[i] + " "); System.out.println ; // выполнить операции над массивом numsl // по ссылке на массив nums2. nums2[3] = 99; System.out.print("Here is numsl after change through nums2: "); for(i=0; i < 10; i++) System.out.print(numsl[i] + " "); System.out.println; } }
Выполнение этой программы дает следующий результат: Here is numsl: 0123456789 Here is nums2: 0 -1 -2 -3 -4 -5 -6 -7 -8 -9 Here is nums2 after assignment: 0123456789 Here is numsl after change through nums2: 012 99 456789
Нетрудно заметить, что в результате присваивания ссылки на массив numsl переменной nums 2 обе переменные ссылаются на один и тот же массив. Применение переменной экземпляра length