Контрольная работа: Программирование на Java
this.userName = userName;
for (int i = 0; i < 10; i++) {
square[i] = i * i;
}
}
public void printSquare(int i) {
// no error handling - assume 0<=i<limit
System.out.println("Hello " + userName);
System.out.println(i + " squared is " + square[i]);
}
public static void main(String[] args) {
new ConstructorExample().printSquare(3);
new ConstructorExample("Ed").printSquare(5);
}
}
Откомпилируем и запустим ConstructorExample. В итоге получим следующий результат:
Hello Anonymous (привет Безымянный)
3 squared is 9 (3 в квадрате будет 9)
Hello Ed (Привет Эд)
5 squared is 25 (5 в квадрате будет 25)
В приведенном выше примере квадрат инициализируется не правильно в зависимости от того, вызывает ли пользователь конструктор без аргумента или использует сигнатуру, требующую строку (String). Пример конструктора можно привести в порядок, переместив поле инициализатора для имени пользователя (userName) и введя следующий блок инициализатора:
{
for (int i = 0; i < 10; i++) {
square[i] = i * i;
}
}
Данный блок инициализаторов выглядит как блок статического инициализатора без статического ключевого слова. Он запускается перед тем, как вызвать конструктор.
Можно разделить конструкторы в примере (ConstructorExample), передвинув следующие строки от конструктора без аргумента:
this("Anonymous");