自己的测试运行结果如下
实体类:
public class CodeBlock {
private String name;
static {
System.out.println("静态代码块执行了。。。");
}
{
name="张三";
System.out.println("构造代码块执行了。。。");
}
public CodeBlock() {
System.out.println("无参构造方法执行了。。。");
}
public CodeBlock(String name) {
this.name = name;
System.out.println("有参构造方法执行了。。。");
}
public String getName() {
return name;
}
}
测试类:
public class Test {
public static void main(String[] args) {
CodeBlock codeBlock=new CodeBlock();
System.out.println(codeBlock.getName());
}
}
运行结果:
总结:
1:加载时机:静态代码块是加载类的时候就执行了,构造代码块是创建对象的时候就执行了比构造方法先执行
2:执行顺序是 静态代码块>构造代码块>有参无参构造方法
3:静态代码块不能访问外面的非static的变量,因为加载类的时候带有static的就加载进来了
4:静态代码块不能存在方法体中;
5:构造代码块是在创建对象的时候比构造方法先执行,可以访问变量并赋值
6:静态代码块可以用来加载一些初始的配置
7:构造代码块可以对一些值进行默认的初始化