java初始化块

来源:互联网 发布:百度网盘直链系统源码 编辑:程序博客网 时间:2024/05/12 21:57

java的初始化块可以算作类中继属性、方法、内部类的第4类成员。主要用于完成属性的初始化。

而属性的初始化主要分成3个阶段

  1. 调用构造函数前
  2. 调用构造函数时
  3. 调用构造函数后
2,3两点很好理解,基本上就是在构造对象的过程中对对象的属性进行初始化,或者在对象构造完成后,通过set方法进行修改。
其实,第一个阶段有分为3个子阶段

默认的初始化

class Student{private int id;private String name;public Student() {super();System.out.println("--->无参构造器");}public Student(int id, String name) {super();this.id = id;this.name = name;System.out.println("--->有参构造器");}public int getId() {return id;}public void setId(int id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}@Overridepublic String toString() {return "Student [id=" + id + ", name=" + name + "]";}}
//默认的初始化@Testpublic void test1(){Student s = new Student();System.out.println(s);}
则结果如下:

显示的初始化方式

其他地方不变,类属性后直接进行初始化
private int id = 1;private String name = "wanghao";
结果如下:

代码块初始化

其他地方不变,属性和方法之间增加代码块
<span style="white-space:pre"></span>private int id = 1;private String name = "wanghao";{id = 3;name = "lalala";System.out.println("--->代码块1");}{id = 4;name = "吼吼";System.out.println("--->代码块2");}
代码块需要注意如下几点:
  • 初始化代码块的执行是先于构造器的
  • 属性默认、显示的初始化顺序要依据两者书写的顺序,一般情况下都是属性写在前
  • 多个初始化块之间按顺序执行
则结果如下

静态代码块

  •  里面可以有输出语句
  •  随着类的加载而加载,而且只被加载一次
  • 多个静态代码块之间按照顺序结构执行
  • 静态代码块的执行要早于非静态代码块的执行。
  • 静态的代码块中只能执行静态的结构(类属性,类方法)
static{System.out.println("--->静态代码块1");}{id = 3;name = "lalala";System.out.println("--->代码块1");}{id = 4;name = "吼吼";System.out.println("--->代码块2");}
结果如下





0 0
原创粉丝点击