代码块: 在java语言中使用{}括起来的内容就是代码块
代码块的分类:
局部代码块 , 构造代码块 , 静态代码块 , 同步代码块(多线程在讲解)
局部代码块:
位置: 在局部位置(在方法中定义)
作用: 某段代码之后,都不再使用某个变量(可能是一个很大的Map集合,很占内存),可限定变量生命周期,及早释放,提高内存利用率
构造代码块:
位置: 在成员位置(在类中方法外定义)
特点: 每创建一次对象都要调用一次构造代码块.并且优先于构造方法执行
作用: 可以给所有对象进行初始化,减少代码的重复
静态代码块(开发使用多):
在成员位置(在类中方法外), 需要在前面添加一个关键字: static
特点: 随着类的加载而加载,只执行一次,并且优先于构造代码块以及构造方法(如有多个静态代码块,按照顺序依次执行)
用于给类进行初始化,在加载的时候就执行,并且只执行一次。
作用: 一般情况下,如果有些代码需要在项目启动的时候就执行,比如一个项目启动需要加载的很多配置文件等资源
class Code {
// 静态代码块
static {
System.out.println("静态代码块执行了....");
}
// 构造代码块(无参/有参都调用)
{
System.out.println("构造代码块被调用了");
}
public Code(){
System.out.println("构造方法被调用了");
}
public Code(String name){
System.out.println(name);
}
}
// 测试类
class CodeDemo {
public static void main(String[] args){
// 局部代码块
{
int x = 20 ;
System.out.println(x);
}
// System.out.println(x);
System.out.println("----------------------");
// 创建Code对象
Code c = new Code();
System.out.println("----------------------");
Code c2 = new Code();
System.out.println("----------------------");
Code c3 = new Code("刘亦菲");
}
}
输出:
20
----------------------
静态代码块执行了.... 随着类的加载而加载,只执行一次,并且优先于构造代码块以及构造方法
用于给类进行初始化,在加载的时候就执行,并且只执行一次。
构造代码块被调用了
构造方法被调用了
----------------------
构造代码块被调用了
构造方法被调用了
----------------------
构造代码块被调用了
刘亦菲