1.所有的静态初始化块都优先执行,其次才是非静态的初始化块和构造函数,它们的执行顺序是:
1)父类的静态初始化块
2)子类的静态初始化块
3)父类的初始化块
4)父类的构造函数
5)子类的初始化块
6)子类的构造函数
注意:1)此处的构造方法需要与自己的类名相同,
2)(静态)初始化块需要用 “{ }”
2.构造方法 (没写(即没添加参数)系统会给默认加一个)
作用:
1)创建对象
2)给对象赋初始值
3)实例化该类
demo:
public class ChuShiHuakuai {
String name1 = "构造方法";
String name2 = "初始化块";
static String name3 = "静态初始化块";
static String name4 = "平常的构造方法";
//构造方法
public ChuShiHuakuai(String name){
System.out.println(name1);
System.out.println(name);
}
//初始化块
{
System.out.println(name2);
}
//静态初始化块
static {
System.out.println(name3);
}
//平常的构造方法
public void print(){
System.out.println(name4);
}
public static void main(String[] args) {
//创建对象
/*
* 此处 构造方法、初始化块、静态初始化块都被当作ChuShiHuakuai类的属性打印出来了,
* 即把 ChuShiHuakuai类的属性付给了work1
* 还有打印顺序 静态初始化块 -> 初始化块 -> 构造方法
*/
ChuShiHuakuai work1 = new ChuShiHuakuai("参数");
//此处调用只调用print(平常所说的构造方法)
work1.print();
}
}
运行结果:
静态初始化块
初始化块
构造方法
参数
平常的构造方法