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

public class Test {
    {
        System.out.println("Block");
    }
    int x = getX();

    static {
        System.out.println("Static block");
    }

    public int getX() {
        System.out.println("X variable");
        return 5;
    }

    static int y = getY();
    public static int getY() {
        System.out.println("Y variable");
        return 6;
    }


    public static void main(String[] args) {
        Test m = new Test();
    }
} 
Explanation
Сначала выполняются блоки статической инициализации и инициализируются статические поля (в том порядке, в котором они записаны), поэтому срабатывают "Static block" и "Y variable".
Затем выполняются простые блоки инициализации и инициализируются не-статические поля (в том порядке, в котором они записаны), поэтому срабатывают "Block" и "X variable"

Следи за CodeGalaxy

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

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