IT评测·应用市场-qidao123.com

标题: Java的初始化块 [打印本页]

作者: 西河刘卡车医    时间: 2023-4-27 10:50
标题: Java的初始化块
三种初始化数据域的方法:
初始化块

在一个类的声明中,可以包含多个代码块。只要构造类的对象,这些块就会被执行。
  1. class Employee {
  2.     private static int nextId;
  3.     private int id;
  4.     private String name;
  5.     private double salary;
  6.     // object initialization block
  7.     {
  8.         id = nextId;
  9.         nextId++;
  10.     }
  11. }
复制代码
在上面这个示例中,无论使用哪个构造器构造对象,id 域都在对象初始化块中被初始化。首先运行初始化块,然后才运行构造器的主体部分。
初始化块这种机制不是必需的,也不常见。通常会直接将初始化代码放在构造器中。
由于初始化数据域有多种途径,所以列出构造过程的所有路径可能相当混乱。下面是调用构造器的具体处理步骤:
静态的初始化块

可以通过提供一个初始化值,或者使用一个静态的初始化块来对静态域进行初始化。
前面已经介绍过第一种机制(提供一个初始化值):private static int nextId = 1;
如果对类的静态域进行初始化的代码比较复杂,那么可以使用静态的初始化块。将代码放在一个块中,并标记关键字 static。下面是一个示例。其功能是将雇员 ID 的起始值赋予一个小于 10000 的随机整数。
  1. // static initialization block
  2. static {
  3.         Random generator = new Random();
  4.         nextId = generator.nextInt(lOOOO);
  5. }
复制代码
在类第一次加载的时候,将会进行静态域的初始化。与实例域一样,除非将它们显式地设置成其他值,否则默认的初始值是 0、false 或 null。所有的静态初始化语句以及静态初始化块都将依照类定义的顺序执行。
参考资料

《Java核心技术卷一:基础知识》(第10版)第 4 章:对象与类 4.6.7 初始化块

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!




欢迎光临 IT评测·应用市场-qidao123.com (https://dis.qidao123.com/) Powered by Discuz! X3.4