关于初始化块与构造函数的关系

  public class A{

    public static int nextID;

    public static int ID;

    public String name ;

      {

        ID = nextID;

        nextID++;

        }

    public a(){

        this.name = "";

        

      }

    public a(String name){

        this.name = name;

      }

         }

   当我们用构造方法构造对象的时候,比如员工,不管调用哪个构造方法,每new一个对象出来就会自动的给这个员工分配一个ID因为这个ID的自增放在了初始化块里面,当构造对象的时候这个初始化块内的代码会自动插入没个构造方法里面,也就是说如果每个构造方法中如果有重复的代码那么可以把这些代码提出来放到初始化块里边,这样当我们在构造对象的时候构造方法里面会自动加入初始化块内的代码。就像这个例子,当我们想new出来的员工每个人的ID是唯一的时候,而又不想在两个构造函数里面都加上这样的代码,那么就可以把共同的代码提出来放在初始化块里边。初始化块在编译的时候会自动加到没个构造方法的前面,在cmd模式下用javap -c这个命令查看。

原文地址:https://www.cnblogs.com/sandwichforworld/p/5658753.html