对象初始化方法执行顺序
2020-05-27 本文已影响0人
lsh的学习笔记
静态代码块:用staitc声明,jvm加载类时执行,仅执行一次
构造代码块:类中直接用{}定义,每一次创建对象时执行。
执行顺序优先级:
- 静态块,
- main(),
- 构造块,
- 构造方法。
静态代码块
作用
初始化类
- 随着类的加载而执行,只执行一次,并优先于
main方法
。 - 一个类中可以有多个静态代码块,执行顺序按定义的先后顺序。
和构造代码块的区别
- 静态代码块是初始化类的,而构造代码块是初始化对象的。
- 静态代码块中的变量是局部变量,与普通函数中的局部变量性质没有区别。
构造代码块
作用
给对象进行初始化。
对象一建立就运行构造代码块了,而且优先于构造函数执行。
这里要强调一下,有对象建立,才会运行构造代码块,类不能调用构造代码块的,而且构造代码块与构造函数的执行顺序是前者先于后者执行。
与构造器的区别
构造代码块是给所有对象
进行统一初始化
,而构造函数是给对应的对象初始化。
因为构造器可能有多个,调用各个构造器初始化的对象是不一样的,但无论创建哪个对象,都会先执行
相同的构造代码块。
也就是说,构造代码块中定义的是不同对象
的共性
的初始化内容
。