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.然后按照静态代码块的顺序执行初始化
posted @ 2018-07-31 17:04  buptyuhanwen  阅读(501)  评论(0编辑  收藏  举报