近期做JAVA的面试题,发现各大公司非常愿意考程序的执行顺序,尤其是static修饰的变量、函数等等,现在来总结一下。
总的来说,JAVA程序的执行顺序大致分为:1)静态属性,静态方法声明,静态块;2)动态属性,普通方法声明,构造块;3)构造方法
为什么和static相关先执行呢?因为静态部分是直接依赖类的,可以通过类名直接调用的,优先于对象存在的。
在这,想说明一下静态块的执行方式。只有当你使用这个类的时候,静态块才会执行(大家可以类比单例模式的饿汉式-静态代码块的实现,该方式就是充分利用了静态块的这个特性,在类加载时实例化,避免线程同步问题)。那么静态块和静态常量变量的执行顺序是看两者的前后顺序,此处要注意一下!