1、在栈中开辟一个空间p。
2、通过类加载器装载classs文件。
3、执行类中的静态代码块。
4、在堆内存中开辟空间,分配内存地址。
5、执行成员默认初始化。
6、执行构造代码块。
7、执行构造函数初始化、
8、把堆内存中的地址赋给应用变量。
我们可以测试看看结果
public class User implements Serializable { private static final long serialVersionUID = 1L; private String id; private String name; private int age; { System.out.println("代码块"); } static { System.out.println("静态代码块"); } public User() { super(); System.out.println("默认构造函数"); } public User(String id, String name, int age) { super(); this.id = id; this.name = name; this.age = age; } public String getId() { return id; } public void setId(String id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } @Override public String toString() { return "User [id=" + id + ", name=" + name + ", age=" + age + "]"; } public static void main(String[] args) { User u = new User(); User u1 = new User(); } }
结果:
静态代码块
代码块
默认构造函数
代码块
默认构造函数