构造函数与构造代码块的区别与应用
一、概念:
构造代码块:直接在类中用{}定义的代码块称为构造代码块,每new一次就会执行
构造函数:给与之对应的对象进行初始化,它具有针对性,函数中的一种。
特点:
1:该函数的名称和所在类的名称相同。
2:不需要定义返回值类型。
3:该函数没有具体的返回值。
二、区别:
共同点:都是用来初始化对象的
不同点:构造代码块是给所有对象进行的统一初始化;构造函数是给对应的对象进行初始化
补充:
1、底层分析:
通过反编译可以看到,构造代码块中的代码也是在构造方法中执行的。在编译时的编译器看来会默认将构造代码块中的代码移动到构造方法中,并且移动到构造方法内容的前面。
2、静态代码块:
在java中使用static关键字声明的代码块。静态块用于初始化类,为类的属性初始化。每个静态代码块只会执行一次。由于JVM在加载类时会执行静态代码块,所以静态代码块先于主方法执行。 静态代码块只会执行一次 不管 new几次对象都是一样
3、静态代码块,构造代码块,构造方法的执行顺序:
静态代码块(一次) 先于 构造代码块(new几次就有几次) 先于 构造函数(new几次就有几次) 先于普通代码块(每次调用方法都会调用)
(静态代码块 》构造代码块》构造函数》普通代码块)