java静态代码块执行顺序

发布时间:2022-03-01 12:05:11 作者:yexindonglai@163.com 阅读(66)

 

虽然说不管是静态变量还是静态方法,这些都是java基础的知识了,但我发现还是有很多人不懂静态的原理,静态的属性遵循以下规则:

  1. 静态元素会在构造方法之前执行
  2. 静态元素从上到下按顺序执行
  3. 静态元素不需要初始化即可直接使用;

 

1、静态元素会在构造方法之前执行,举个例子就知道啦;我们看看下面的代码

  1. public class Main {
  2. static{
  3. System.out.println("1:静态代码块");
  4. }
  5. public Main(){
  6. System.out.println("2:构造函数");
  7. }
  8. public static void main(String[] args) {
  9. // 初始化
  10. Main main = new Main();
  11. System.out.println("3 :main 方法");
  12. }
  13. }

输出如下:

通过例子我们可以知道,我们在类中加个一个静态方法块 static{} ,那么这个静态的方法块就一定会在类的初始化之前执行,

需要注意的是,就算不初始化,这个static方法块也会执行,代码如下:

  1. public class Main {
  2. static{
  3. System.out.println("1:静态代码块");
  4. num = 2;
  5. }
  6. public static int num = 1;
  7. public Main(){
  8. System.out.println("2:构造函数");
  9. }
  10. public static void main(String[] args) {
  11. }
  12. }

通过以上代码我们可以看到,以上的main方法没有任何代码,但是照样会打印静态代码块的字符;

 

2、静态元素从上到下按顺序执行

  静态元素也是有执行顺序的,规则就是从上至下按顺序执行;多说无用,看代码:

  1. public class Main {
  2. public static int num = 1; // 静态变量
  3. static{
  4. num = 2;
  5. }
  6. public static void main(String[] args) {
  7. System.out.println("静态变量的值为:"+num);
  8. }
  9. }

打印结果如下:

那么这时候我们把静态修饰的方法和属性换个位置

替换位置后的代码如下:

  1. public class Main {
  2. static{
  3. num = 2;
  4. }
  5. public static int num = 1; // 静态变量
  6. public static void main(String[] args) {
  7. System.out.println("静态变量的值为:"+num);
  8. }
  9. }

打印结果也会发生变化

通过以上举例说明了,静态变量和方法都是按顺序执行的;

 

关键字Java