代码块
本地(普通)代码块
实例代码块
静态代码块
同步代码块
主要讲解 实例 和 静态代码块。
本地代码块
本地代码块
其实我们遇到过,在方法中,书写两个花括号,就是我们所说的 本地代码块
案例
构造代码块
实例代码块
也称为构造代码块
- 构造代码块的
作用
是给对象进行初始化
。对象一建立就运行构造代码块了,而且优先于构造函数执行
。这里要强调一下,有对象建立,才会运行构造代码块,类是不能调用构造代码块的,而且构造代码块与构造函数的执行顺序是前者先于后者执行。构造代码块与构造函数的区别
是:构造代码块是给所有对象进行统一初始化,而构造函数是给对应的对象初始化,因为构造函数是可以多个的,运行哪个构造函数就会建立什么样的对象,但无论建立哪个对象,都会先执行相同的构造代码块。也就是说,构造代码块中定义的是不同对象共性的初始化内容。
静态代码块
- 它是随着类的加载而执行,
只执行一次
,并优先于主函数
。具体说,静态代码块是由类调用的
。类调用时,先执行静态代码块,然后才执行主函数的。
- 静态代码块其实就是给类初始化的,而构造代码块是给对象初始化的。
- 静态代码块中的变量是局部变量,与普通函数中的局部变量性质没有区别。
- 一个类中可以有多个静态代码块
可根据以下代码以及运行结果去对照分析上述规则
实例 和 静态 代码块 用来实例化(初始化) 数据成员
静态代码块 是后初始化 count 的值。
难道 这就说明, 静态代码块初始化数据的优先级 低于 静态成员变量初始化 吗?
不一定!
反例:
来看看这个程序(此时 静态成员变量初始化 放在 静态代码块下方)
总结
静态代码块不管生成多少个对象,其只会执行一次,且是最先执行的。
静态代码块执行完毕后, 实例代码块(构造块)执行,再然后是构造函数执行。
匿名对象
- 表示没有名字的对象.
- 没有引用的对象称为匿名对象.
- 匿名对象只能在创建对象时使用.
- 如果一个对象只是用一次, 后面不需要用了, 可以考虑使用匿名对象
代码实例