版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/document_hk/article/details/84255384
1.静态代码块和非静态代码块
测试源代码:
package eighth;
import second.test;
public class StaticTest {
public static void main(String[] args) {
System.out.println("分割线=============");
new StaticTest();
System.out.println("分割线=============");
new StaticTest();
}
static {
System.out.println("这个是静态代码块");
}
public StaticTest() {
System.out.println("默认的构造方法");// TODO 自动生成的构造函数存根
}
{
System.out.println("非静态代码块");
}
}
下面是测试结果
这个是静态代码块
分割线=============
非静态代码块
默认的构造方法
分割线=============
非静态代码块
默认的构造方法
从上面的测试结果可以看到,静态代码块的执行次数只有一次,有点类似于静态的变量,在类创建的时候被创建,非静态代码块在创建类的实例的时候被创建,执行在默认的构造方法之前。即无论创建多少个类的实例,静态代码块只在首次执行,后面都没有被执行,后面根据类的实例再执行相应部分的代码块。