1、静态代码块:class文件加载到方法区时调用
注意:静态代码块只能初始化静态属性
2、代码块:new对象时优先于构造方法调用
注意:代码块可以初始化成员属性和静态属性
3、构造方法:new对象时调用
注意:构造方法可以初始化成员属性和静态属性
//成员属性
String attr1;
//静态属性
static String attr2;
1、静态代码块:class文件加载到方法区时调用
//注意:静态代码块只能初始化静态属性
static{
//attr1 = "ccc";//this.attr1 = "ccc";代码错误,因为静态代码块是class文件加载到方法区时调用,加载的时候还没有对象,没有this
attr2 = "ccc";//A.attr2 = "ccc"
System.out.println("A类的静态代码块 -- " + attr2);
}
2、代码块:new对象时优先于构造方法调用
//注意:代码块可以初始化成员属性和静态属性
{
attr1 = "bbb";//this.attr1 = "bbb";
attr2 = "bbb";//A.attr2 = "bbb"
System.out.println("A类的代码块 -- " + attr1 + " -- " + attr2);
}
3、构造方法:new对象时调用
//注意:构造方法可以初始化成员属性和静态属性
public A() {
attr1 = "aaa";//this.attr1 = "aaa";
attr2 = "aaa";//A.attr2 = "aaa"
System.out.println("A类的无参构造 -- " + attr1 + " -- " + attr2);
}