Программирование на JAVA

Навигация

Лекция 1. Что такое Java? История создания

Лекция 2. Основы объектно-ориентированного программирования

Лекция 3. Лексика языка

Лекция 4. Типы данных

Лекция 5. Имена. Пакеты

Лекция 6. Объявление классов

Лекция 7. Преобразование типов

Лекция 8. Объектная модель в Java

Лекция 9. Массивы

Лекция 10. Операторы и структура кода. Исключения

Лекция 11. Пакет java.awt

Лекция 12. Потоки выполнения. Синхронизация

Лекция 13. Пакет java.lang

Лекция 14. Пакет java.util

Лекция 15. Пакет java.io

Лекция 16. Введение в сетевые протоколы

Рассмотрим создание массива на основе ссылочного типа. Предпо­ложим, это будет класс 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} приведет к ошибке компиляции, так можно только инициализировать переменные.