一文带你详细了解【代码块】

1. 代码块的概念以及分类

使用 { } 定义的一段代码称为 代码块,根据代码块的位置以及关键字,又可以分为4种:

  • 普通代码块
  • 构造代码块 (非静态代码块、实例代码块)
  • 静态代码块
  • 同步代码块

那接下来我们一一对这几种代码块进行介绍!

2. 代码块的解析

2.1 普通代码块

所谓普通的代码块:就是定义在方法中的代码块

一文带你详细了解【代码块】_第1张图片
生命周期:到了这就创建,出了这个代码块就销毁了!


2.2 构造块(非静态代码块、实例代码块)-----> 用来初始化非静态的数据成员

所谓的构造块:就是在类里面,方法外面的代码块

一文带你详细了解【代码块】_第2张图片
从图中,可以看出在调用构造方法之前,先执行 构造块,然后再执行构造方法 ,和它们两个先后顺序无关!


再来看另外一种情况! 当非静态成员变量直接赋值的情况下,那么构造代码块和 非静态的成员变量。就看定义的顺序,谁在最后,最后的值就是哪个
一文带你详细了解【代码块】_第3张图片

Tips:我们可以这样理解,程序在编译好之后,会将构造快拷贝到构造方法中的最前面部分去!!

2.3 静态代码块---->初始化静态的成员,或者提前准备一点数据

所谓的静态代码块,就是类的里面,方法的外面,加上一个static关键字

一文带你详细了解【代码块】_第4张图片
从上图中可看出,静态代码块执行顺序是最优先的!无论位置在哪里。(只要这个类被加载,静态代码块都会被执行

Tips:

  • 静态代码块不管生成几个对象,只会执行一次
  • 静态成员变量是类的属性,因此在JVM加载类时开辟空间并初始化
  • 如果一个类中包含多个静态代码块,在编译的时候,编译器会按照定义的顺序依次执行
  • 实例代码块只有在创建对象的时候才会执行

2.4 同步代码块

后期在进行解释

你可能感兴趣的:(JavaSE,java)