java 类中静态 { }(大括号) 构造方法顺序

 

  静态代码块

  static{   

    System.out.println("我是静态代码块");

  }

  类中的初始化顺序(一个类,没有继承关系)

  静态初始化==>默认初始化==>定义初始化==>{ }==>构造方法初始化

  1,静态初始化(静态属性,静态代码块,静态方法)是按在类中的先后顺序执行的

  2,默认初始化,是属性的初始化

      int类型的话是0,double类型是0.0,String类型是null

  3,定义初始化,是属性的赋值初始化

    比如在类中声明一个int类型变量,赋值为1

    public int variable = 1;(首先variable初值是为0,之后把1的值赋给了variable,然后variabl=1)

  4, {

      System.out.println("我是大括号");

    }

    { }大括号是方法块。

   代表一段程序,在这里面的定义变量是局部变量,不和全局变量有冲突,代码块运行完毕之后该区域的变量就变成了垃圾数据。

  上面摘自于某位博主的定义,我不太清楚。

  5,构造方法初始化,是在类加载时需要初始化的方法或属性,等等。

  

 下面是自己写的测试类。

  public class OrderClass {
  private int ab =1;
  private int cd = getCd();

  static {
    System.out.println("OrderClass静态");
  }

  public OrderClass() {
    System.out.println("OrderClass构造方法 cd="+cd);
  }

  int getCd() {
    System.out.println("OrderClass属性调用方法 cd="+cd);
    return ab;
  }

  {
    System.out.println("OrderClass 大括号 cd="+cd);
  }

  public static void main(String[] args) {
    new OrderClass();
  }
}

 

做了继承的测试,把{ }屏蔽了,这样顺序就捋清楚了。

先父类静态,再子类静态。然后父类 默认初始化,定义初始化,构造方法初始化。然后子类 默认初始化,定义初始化,构造方法初始化。

 标示:以上仅限于个人学习总结和分享,有不对的地方大家可以指出来,及时做更改。

posted @ 2022-04-13 19:21  行白夜  阅读(635)  评论(0)    收藏  举报