java在编译class时,会自动生成一个init方法和clinit方法。clinit方法在第一次加载该类时调用,而且只调用一次。init在创造这个class的实例时调用,实例化一次调用一次。
clinit方法中其实就是初始化一些静态变量,执行static块等,初始化和执行的顺序完全按照你代码顺序来,也就是先初始化x为0,然后+7,在模4,最后x=3了,此时main方法打印x,即为3
先运行static代码块 x+=7,得到x=7
之后运行static代码块 x%=4,得到x=3
之后进入main方法打印x=3
一般自上往下,因为有静态方法,他先走了下面的静态方法才进到main方法中,所以结果为3
static int x;
static{ x += 7;}
static{x %= 4;}
public static void main(String args[])
{
System.out.println("x=" + x);
}
多自己调试看看
1、static
2、构造方法
3、主方法
4、方法