почему конструктор java это. переменная не присваивается массиву?

#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 не выполняет инструкции строка за строкой?