при вызове конструктора срабатывает нестатический блок, и печатаются переменные i и name.
у них дефолтные значения(надеюсь правильно применил слово дефолтные), но переменные инициализируются до блока, это нормально?
а после они уже со значением печатаются.
package com.javarush.task.task15.task1524;
/*
Порядок загрузки переменных
*/
public class Solution {
static {
init(); //1
}
static {
System.out.println("Static block"); //2
}
{
System.out.println("Non-static block"); //4
printAllFields(this);
}
public int i = 6;
public String name = "First name";
public Solution() {
System.out.println("Solution constructor"); //5
printAllFields(this);
}
public static void init() {
System.out.println("static void init()"); //2
}
public static void main(String[] args) { //3
System.out.println("public static void main");
Solution s = new Solution();
}
public static void printAllFields(Solution obj) {
System.out.println("static void printAllFields");
System.out.println(obj.i);
System.out.println(obj.name);
}
}