Что напечатает следующий код?

public class Test {

    static int b = Test.a;
    static final int a = 3;
    
    public static void main(String... args) {
        System.out.println("a = " + a + ", b = " + b);
    }
    
}
Explanation

На первый взгляд может показаться, что правильным будет ответ "a = 3, b = 0", поскольку статические поля инициализируются в порядке объявления и полю b присваивается ещё не проинициализированное значение a.

На самом деле, поскольку поле a является константой, то компилятор сразу подставляет его значение. Т.е. фактически первая строка компилируется как

static int b = 3;

и правильным будет ответ "a = 3, b = 3"


Следи за CodeGalaxy

Мобильное приложение Beta

Get it on Google Play
Обратная Связь
Продолжайте изучать
тесты по Java
Cosmo
Зарегистрируйся сейчас
или Подпишись на будущие тесты