java – 静态初始化块的顺序
我在静态初始化块上发现了很多帖子,但是我试图更好地了解执行顺序及其原因.下面的代码打印出两个静态块中的文本,然后“then”打印出主静态块中的文本.
我理解编译器调用它的方式是在加载类时按顺序执行所有静态块,然后访问main方法.但是由于main方法本身是静态的,为什么不按照其他静态块的顺序执行它(甚至不确定它是否有用,只是试图理解一个概念,以及是否有这样做的紧迫原因).如果我们想在主块之后运行静态块怎么办? class Cat { static { System.out.println("This block welcomes you first"); } public static void main(String[] args) { System.out.println("Meow world "); } static { System.out.println("This block welcomes you after"); } } 实际产出 This block welcomes you first This block welcomes you after Meow world 为什么不? This block welcomes you first Meow world This block welcomes you after 解决方法
加载类后立即执行静态初始值设定项.在加载类之后调用main方法.
JLS的这一部分讨论了事件的顺序(12.1.3-4):
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |