本节把类和对象的初始化所涉及到的所有代码块阐述一边。
示例代码:
public class Demo {
private static String name;
private String age; // 主函数
public static void main(String[] args) {
Demo demo = new Demo(); } // 构造函数
public Demo() {
System.out.println("我是构造函数,随着对象建立而运行");
} // 我是构造代码块
{
System.out.println("我是构造代码块,随着对象建立而运行,优先于对象的构造函数"); }
// 我是静态代码块
static {
System.out.println("我是静态代码块,随着类加载而运行");
}
}
新建一个Demo类,主函数中新建此类对象demo;
运行步骤:
1.Demo类加载的同时,static代码块会一起加载并执行;作用是对类初始化
2.new关键字在堆中开辟空间,分配内存地址;建立对象的特有属性。并进行默认初始化;对属性进行显示初始化。
3.对构造代码块初始化,会优先于构造函数执行,作用是对所有对象初始化;
4.紧跟着构造函数执行,作用是对相关对象初始化;