#java
#java
Вопрос:
public class Library {
private int size;
public Library(int size) {
this.size = size;
}
Book book_arr[]= new Book[size];
Использование переменной size для массива не инициируется, почему бы и нет, поскольку я присваиваю значение size из метода конструктора?
Ответ №1:
Переменная book_arr
экземпляра инициализируется перед выполнением тела конструктора, поэтому size
0
в это время все еще (по умолчанию).
Вы должны создать экземпляр массива внутри конструктора, чтобы использовать size
переданный в конструктор:
public class Library
{
private int size;
private Book[] book_arr;
public Library(int size) {
this.size = size;
this.book_arr = new Book[size];
}
}
Чтобы уточнить, все объявления переменных экземпляра и инициализаторы выполняются при создании экземпляра непосредственно перед телом конструктора (независимо от того, появляются ли они до или после конструктора). С другой стороны, два оператора одного и того же типа, такие как:
private int size = 5;
private Book[] book_arr = new Book[size];
будут выполняться в порядке их появления.
Комментарии:
1. Я пришел из программирования на C, поэтому класс java не выполняет инструкции строка за строкой?