java基础---static静态代码块执行顺序
===?静态代码块的执行顺序是按照写的顺序执行的吗?静态变量的定义和初始化的顺序和静态代码块的顺序有关系吗?
静态代码块的执行先后顺序是什么样的呢?
public class Test{
static{ cnt = 6;
}
static int cnt = 100;
public static void main(String[] args){
System.out.println("cnt = " + cnt);
//最后输出是50,如果按照错误说法就应该是3
//按顺序执行就是cnt=6--->cnt=100---->cnt = 100/2 = 50.
}
static{
cnt /= 2;
}
}
1.具体的执行顺序是先定义静态变量cnt=0,分配内存空间
2.然后按照静态代码块的顺序执行初始化