1,静态块
随着JVM加载类的时候加载而执行
不管new多少次,只执行一次
如果一个类中有多个static修饰的静态代码块,按照先后顺序执行。
例:
public class B {
public static B t1 = new B();
public static B t2 = new B();
{
System.out.println("构造代码块");
}
public B() {
System.out.println("构造函数");
}
static {
System.out.println("静态代码块");
}
public static B t3 = new B();
public static void main(String[] args) {
new B();
}
}
//运行结果
构造代码块
构造函数
构造代码块
构造函数
静态代码块
构造代码块
构造函数
构造代码块
构造函数
2,匿名构造块
执行在构造方法之前
构造代码块与构造函数的区别是:构造代码块是给所有对象进行统一初始化
而构造函数是给对应的对象初始化,因为构造函数是可以多个的,运行哪个构造函数就会建立什么样的对象,
但无论建立哪个对象,都会先执行相同的构造代码块。
也就是说,构造代码块中定义的是不同对象共性的初始化内容。
3,构造函数
构造函数的特点:
函数名与类名相同
不用定义返回值类型
不可以写return语句
构造函数的初始化:
创建对象时才会调用。
构造函数的作用:给对象进行初始化。
构造函数对象一建立就会调用与之对应的构造函数,可用于给对象进行初始化。
当一个 类中没有定义构造函数时,系统会默认给该类加入一个空参数的构造函数,
当自己定义了构造函数后,默认的空构造函数就不存在了。
注意:默认构造函数的特点;多个构造函数是以重载的形式存在的。
执行顺序
静态块---->匿名构造块-------->构造函数