Встречается на собеседованиях • сегодня

Что происходит при подъеме контекста

Подъем контекста (hoisting) в Java не существует — это особенность JavaScript. Однако в Java есть аналогичные концепции, связанные с порядком инициализации:

  1. Статические поля и блоки инициализируются при загрузке класса в порядке объявления
  2. Нестатические поля инициализируются перед вызовом конструктора
  3. Локальные переменные должны быть явно инициализированы перед использованием

Пример:

java
class Example {
    static int x = initX(); // статическая инициализация
    
    static {
        System.out.println("Static block"); // выполнится вторым
    }
    
    int y = initY(); // инициализация экземпляра
    
    static int initX() {
        System.out.println("Static field init");
        return 1;
    }
    
    Example() {
        System.out.println("Constructor");
    }
    
    int initY() {
        System.out.println("Instance field init");
        return 2;
    }
}

Порядок вывода:

  1. Static field init
  2. Static block
  3. Instance field init
  4. Constructor
Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы