public class Test {
private String str = "初始化赋值";
{
System.out.println("代码块执行");
str = "代码块赋值";
}
static {
System.out.println("静态代码块执行...");
}
public Test(String str) {
this.str = str;
System.out.println("构造方法赋值执行...");
}
public void setStr(String str) {
this.str = str;
System.out.println("setter方法执行...");
}
public static void main(String[] args) {
Test hello = new Test("hello");
hello.setStr("world");
}
}
Connected to the target VM, address: '127.0.0.1:5307', transport: 'socket'
静态代码块执行...
代码块执行
构造方法赋值执行...
setter方法执行...
Disconnected from the target VM, address: '127.0.0.1:5307', transport: 'socket'
其实setter方法没必要加,是我手动调用的,所以顺序依次为
静态代码块执行...
{在这一步其实str已经初始化赋值了 , 也就是说 str 当前等于 "初始化赋值"}
代码块执行
构造方法赋值执行...
静态代码块仅在类加载的时候执行一次!重复创建对象不会重复执行!