1、介绍
①、构造函数
说明
- 对象一建立,就会调用与之相应的构造函数,也就是说,不建立对象,构造函数时不会运行的。
- 构造函数的作用是用于给对象进行初始化。
- 一个对象建立,构造函数只运行一次,而一般方法可以被该对象调用多次。
②、构造代码块
说明
- 对象一建立,就会调用与之相应的构造函数,也就是说,不建立对象,构造函数时不会运行的
- 构造函数的作用是用于给对象进行初始化
- 一个对象建立,构造函数只运行一次,而一般方法可以被该对象调用多次
③、静态代码块
说明
- 它是随着类的加载而执行,只执行一次,并优先于主函数。具体说,静态代码块是由类调用的。类调用时,先执行静态代码块,然后才执行主函数的
- 静态代码块其实就是给类初始化的,而构造代码块是给对象初始化的。
- 静态代码块中的变量是局部变量,与普通函数中的局部变量性质没有区别。
- 一个类中可以有多个静态代码块
2、三者执行顺序
1、静态代码块,静态,其作用级别为类,构造代码块、构造函数,构造,其作用级别为对象。
3、代码示例
①、普通类初始化
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| public class HelloWorld {
public HelloWorld() { System.out.println("helloWorld 构造函数....."); }
{ System.out.println("普通代码块......"); }
static { System.out.println("静态代码块"); System.out.println("--------------------"); }
public static void main(String[] args) { HelloWorld A = new HelloWorld(); System.out.println("*******************"); HelloWorld B = new HelloWorld(); } }
|
执行结果
1 2 3 4 5 6 7
| 静态代码块 -------------------- 普通代码块...... helloWorld 构造函数..... ******************* 普通代码块...... helloWorld 构造函数.....
|
②、继承体系初始化
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46
| public class HelloWorld {
public static String name = "父类:HelloWorld——>静态变量";
public HelloWorld() { System.out.println("父类:HelloWorld——>构造函数....."); }
{ System.out.println("父类:HelloWorld——>普通代码块......");
}
static { System.out.println(name); System.out.println("父类:HelloWorld——>静态代码块");
}
}
public class ChildHelloWorld extends HelloWorld {
private static String childName = "子类:ChildHelloWord——>静态变量";
public ChildHelloWorld() { System.out.println("子类:ChildHelloWorld——>构造函数....."); }
{ System.out.println("子类:ChildHelloWorld——>普通代码块......"); }
static { System.out.println(childName); System.out.println("子类:ChildHelloWorld——>静态代码块......"); }
public static void main(String[] args) {
System.out.println("子类:main()方法.....");
new ChildHelloWorld();
} }
|
执行结果
1 2 3 4 5 6 7 8 9
| 父类:HelloWorld——>静态变量 父类:HelloWorld——>静态代码块 子类:ChildHelloWord——>静态变量 子类:ChildHelloWorld——>静态代码块...... 子类:main()方法..... 父类:HelloWorld——>普通代码块...... 父类:HelloWorld——>构造函数..... 子类:ChildHelloWorld——>普通代码块...... 子类:ChildHelloWorld——>构造函数.....
|
Java 初始化顺序图