Программирование на JAVA
Меню :
Стартовая
Основы программирования
Программирование на JAVA
Программирование на C++
Программирование на Pascal
Задачи по программированию
Рассмотрим создание массива на основе ссылочного типа. Предположим, это будет класс Point. При создании экземпляра массива с применением ключевого слова new не создается ни один объект класса Point, создается лишь один объект массива. Каждый элемент массива будет иметь пустое значение null. В этом можно убедиться на простом примере:
Point p[]=new Point[5]; for (int i=0; Kp.length; i++) { System.out.pritnln(p[i]);
}
Результатом будут лишь слова null.
Далее нужно инициализировать элементы массива по отдельности, например, в цикле. Вообще, создание массива длиной п можно рассматривать как заведение п переменных и работать с элементами массива (в последнем примере p[i]) по правилам обычных переменных.
Кроме того, существует и другой способ создания массивов — инициализаторы. В этом случае ключевое слово new не используется, а ставятся фигурные скобки, и в них через запятую перечисляются значения всех элементов массива. Например, для числового массива явная инициализация записывается следующим образом:
inti[]={1,3, 5};
int j[]={}; // эквивалентно new int[0]
Длина массива вычисляется автоматически, исходя из количества Введенных значений. Далее создается массив такой длины и каждому его Цементу присваивается указанное значение.
Аналогично можно порождать массивы на основе объектных типов, Например:
Point p=new Point(1,3);
Point arr[]={p, new Point(2,2), null, p};
277
// или
String sarr[]={"aaa", "bbb", "cde"+"xyz"};
Однако инициализатор нельзя использовать для анонимного создания экземпляров массива, то есть не для инициализации переменной, а например, для передачи параметров метода или конструктора.
Например:
public class Parent { private String[] values;
protected Parent(String[] s) { values=s;
}
}
public class Child extends Parent {
public Child(String firstName, String lastName) {
super(???); //требуется анонимное создание массива
}
}
В конструкторе класса Child необходимо осуществить обращение к конструктору родителя и передать в качестве параметра ссылку на массив. Теоретически можно передать null, но это приведет в большинстве случаев к некорректной работе классов. Можно вставить выражение new String[2], но тогда вместо значений firstName и lastName будут переданы пустые строки. Попытка записать {firstName, lastName} приведет к ошибке компиляции, так можно только инициализировать переменные.