public class Student {
public String name= "李四";
{
System.out.println("非静态代码块"+this.name);
}
public Student(String name) {
System.out.println(this.name);
this.name = name;
System.out.println(this.name);
}
public static void main(String[] args) {
Student student=new Student("张三");
System.err.println(student.name);
}
简而言之Java对象初始化时一共经历四个过程:
一、给对象的实例变量赋予默认值,即系统默认的值:Boolean对应的是 false int 对应的是 0;
二、成员变量声明的初始化;
三、代码块的初始化;
四、构造方法的初始化
下面具体解释上述代码:
一、程序刚刚运行的时候,成员变量的初始值(name)为 null;
二、在运行到 String name="李四"; 将字符串"李四"的值赋值给name;
三、由于执行到了 new Student();创建对象的时候执行了代码块的初始化;
四、最后 new Student("张三"); 使用构造方法进行初始化;
所以程序的运行结果: