关于Static静态代码块、匿名代码块、构造器(构造方法)小拓展
对于Static静态代码块、匿名代码块、构造器(构造方法)有以下几个注意事项。
静态代码块:
- 静态代码块是与类一起加载的,它是在另外两个代码块之前执行的,并且只执行一次;
- 在静态代码块之后执行匿名代码块,其次是构造器。
构造器
- 构造方法是一种特殊的方法,即使不显示也是默认存在的,其构造方法名必须与类名相同(包括大小写);
- 构造方法一般用于初始化对象;
- 构造方法不能被继承,且不能static、final、abstract等的一些修饰符修饰。
匿名代码块
-
匿名代码块有点类似于构造方法,是默认存在的且在工作方法之前的;
-
匿名代码块可以用来赋初值(但一般不建议用它来赋初值)。
我们来写代码验证一下:
public class OoStatic { { System.out.println("这是一个匿名代码块!"); } static { System.out.println("这是一个静态代码块!"); } public OoStatic() { System.out.println("这是一个构造器!"); } public static void main(String[] args) { /* //OoStatic s1 = new OoStatic(); //System.out.println("==========="); //OoStatic s2 = new OoStatic(); 当我们没有进行OoStatic s1 = new OoStatic();操作时,程序程序加载了类,但不会执行匿名代码块以及构造器,然而静态代码块是与类一起加载的,因此会有一个输出: 其结果为:这是一个静态代码块! */ //这里我们对OoStatic类进行了两次创建但是static静态代码块只执行了输出了一次,表明静态代码块只能执行一次 OoStatic s1 = new OoStatic(); System.out.println("==========="); OoStatic s2 = new OoStatic(); /* 输出结果为:这是一个静态代码块! 这是一个匿名代码块! 这是一个构造器! =========== 这是一个匿名代码块! 这是一个构造器! */ } }