在Java程序中,类的定义和方法的定义都必须放在一个“块”中,而条件语句,循环语句中的代码通常也放在一个“块”中。

所谓“块”,就是用{和}所包含的代码块,它们在逻辑上常常是一个整体。初始化块,独立于方法体和构造函数之外,可以看成是一个没有参数,没有返回值,没有方法名的特殊方法。

初始化块主要用于对象的初始化操作,在创建对象时调用,可以用于完成初始化属性值,加载其他类等功能。初始化块和构造函数的功能相同,都可以在创建对象时完成一些初始化操,一般情况下,构造方法初始化和初始化块初始化可以通用。初始化块与构造方法区别:

构造方法在初始化时可以通过参数接收外界传入的值,而初始化块则不能。

初始化块的执行顺序在构造方法之前。如果构造方法多次重载,此时可以考虑将构造方法中通用的代码提到初始化块中定义。

public class
 public static  void
 new
 new A("");
 
 }
}
class
 {System.out.println("初始化块");}
 public A(){System.out.println("无参的构造函数");}
 public A(Stringname){System.out.println("带参数的构造函数");} 
}

运行结果:

初始化块

无参的构造函数

初始化块

带参数的构造函数

与静态代码块的区别:

(1)静态的初始化块比非静态的初始化块执行的要早。静态初始化块的执行实际需要注意,它是在类加载器第一次加载该类时调用,不一定非要创建对象才触发(见下面代码所示)。

public class
 static
 System.out.println("加载Test类,执行静态代码块");
}
 public static  void
 System.out.println("加载类Test完毕,执行main函数");
 }
}

运行结果:

加载Test类,执行静态代码块

加载类Test完毕,执行main函数

(2)静态初始化块只执行一次,非静态的初始化块可执行多次。