静态代码块&实例化代码块
package com.company.test03;
/*
* 可以使用static关键字来定义“静态代码块”:
* 1、语法格式::
* static{
* java语句;
* }
*
* 2、静态代码块在类加载时执行,在main方法之前执行,并且只执行一次。
*
* 3、静态代码块在一个类中可以编写多个,并且遵循自上而下的顺序执行。
*
* 4、静态代码块的作用?什么时候用?
* - 这当然和具体的需求有关。例如项目中要求在类加载的时刻/时机执行代码,完成日志的记录。
* 那么这段记录日志的代码就可以编写到静态代码块中。
* - 静态代码块是java为程序员准备的一个特殊时刻,这个特殊时刻被称为类加载时刻。若希望
* 在此时执行一段特殊的程序,这段程序就可以直接放到静态代码块当中。
*
* 5、通常在静态代码块当中完成预备工作,先完成数据的准备工具,例如:初始化连接池,解析XML配置文件...
*
* 6、实例代码块:
* 语法: {
* java语句;
* }
* 7、实例语句块/代码块【了解内容,使用的非常少】
* a.实例代码块可以编写多个,也是遵循自上而下的顺序依次执行
* b.实例代码块只有在实例化对象的时候才会执行。
* 如下运行StaticTest01.main()时输出:
* 类加载-->1
类加载-->2
类加载-->3
main begin
* 并不会执行两个实例代码块;
*
* 而当运行StaticTest02.main()时输出:
类加载-->1
类加载-->2
类加载-->3
实例代码块1
实例代码块2
构造方法
* c.实例化代码块在构造方法之前执行,构造方法执行时,实例代码对应执行一次。
* d.实例代码块也是java语言为程序员准备的一个特殊时机,这个特殊时机被称为:对象初始化时机。
* */
public class StaticTest01 {
{
System.out.println("实例代码块1");
}
static{
System.out.println("类加载-->1");
}
static{
System.out.println("类加载-->2");
}
static{
System.out.println("类加载-->3");
}
{
System.out.println("实例代码块2");
}
public StaticTest01(){
System.out.println("构造方法");
}
public static void main(String[] args) {
System.out.println("main begin");
}
}
package com.company.test03;
public class StaticTest02 {
public static void main(String[] args) {
StaticTest01 s = new StaticTest01();
/*类加载-->1
类加载-->2
类加载-->3
实例代码块1
实例代码块2
构造方法*/
}
}