В каком порядке выполняются определения блока инициализатора, переменных и т. д.? (в java)

У меня проблемы с пониманием порядка, в котором происходит инициализация. это порядок, который я предполагал:

*Once per 
    1. Static variable declaration
    2. Static block
*Once per object
    3. variable declaration
    4. initialization block
    5. constructor

но согласно этому коду я явно ошибаюсь:

    class SomethingWrongWithMe
    {
        {
            b=0;         //no. no error here.
            int a = b;   //Error: Cannot reference a field before it is defined.
        }
        int b = 0;
    }

И ошибка исчезнет, ​​если я сделаю это:

    class SomethingWrongWithMe
    {
        int b = 0;
        {
            b=0;
            int a = b;   //The error is gone.
        }
    }

Я не могу понять, почему нет ошибки на

    b=0;
10
задан Untitled 12 March 2012 в 10:22
поделиться