在程序中使用“{}”定义的结构就称为代码块,而后根据代码块出现的位置以及定义的关键词的不同,代码块可以分为:普通代码块、构造代码块、静态代码块和同步代码块,其中对于同步代码块会在多线程中进行讲解。
1、普通代码块
普通代码块的主要特点是定义在一个方法之中的代码块
代码 | 分析 | 特征 | |
普通代码块 | public static void main(String arg[]) { int x = 100; | 按照Java程序的开发标准规定相同名称的变量是不能在同一个方法中存在,而此时通过“{}”进行划分界限,则两个相同变量可以同时存在,一个可以理解为局部变量,一个可以理解为全局变量(相对而言)。 | 可以在一个方法中进行一些结构的拆分,以防止相同变量名称所带来的相互影响 |
2、构造代码块
构造块是定义在一个类之中的。
观察构造块:
代码 | 结果 | 特征 | |
构造代码块 | package cn.demos; class Person { { public class Demo2 { } | Person类构造块执行 Person类构造方法执行 Person类构造块执行 Person类构造方法执行 Person类构造块执行 Person类构造方法执行 | 构造块优先执行于构造方法; 每次对象实例化时,都会调用构造块里的代码。 |
3、静态代码块
静态代码块主要指的是使用static关键字定义的代码块,而静态代码块的定义需要区分两种情况:
1)主类中定义静态块;
2)非主类中定义静态块。
代码 | 结果 | 特征 | |
非主类定义静态块 | package cn.demos; class Person { static { { public class Demo2 { } | 非主类的静态代码块的执行 Person类构造块执行 Person类构造方法执行 Person类构造块执行 Person类构造方法执行 Person类构造块执行 Person类构造方法执行 | 此时我们可以发现静态代码块优先于构造代码块的执行,且不管有多少个实例化对象,都只执行于一次;而静态代码块的主要目的是为了静态初始化的实现。 |
主类中定义静态块 | package cn.demos; public class Demo2 { public static void main(String arg[]) { | 主类中的静态代码块 我要执行 | 主类中的静态代码块优先于主类进行 |