代码块在java中用{}括起来的称为代码块,代码块可分为以下四种:普通代码块构造代码块静态代码块同步代码块普通代码块在方法或语句中出现的{}就称为普通代码块。普通代码块和一般语句的执行顺序由他们在代码中出现的次序决定,先出现先执行。普通代码块一般过来限制变量的作用域,防止代码过多时可能产生的变量命名冲突。示例:public class testDemo { public static void main(String[] args ) { { int x = 3; System.out.println(“普通代码块中的变量x=” + x); } int x = 1; System.out.println(“主方法中的变量想=” + x); { int y = 7; System.out.println(“普通代码块中的变量y=” + y); } }}构造代码块在类中直接使用没有任何修饰符的{}声明的代码块就是构造块。和构造函数的作用类似,都能对对象进行初始化,并且只要实例化一个对象,构造代码块都会执行一次。构造块优先于构造函数执行,如果存在多个构造代码块,则执行顺序按照定义的顺序依次执行。示例:public class testDemo { public static void main(String[] args ) { Test t = new Test(); }}class Test{ { //构造代码块 System.out.println(“构造代码块1。”); } //构造函数 public Test(){ System.out.println(“无参构造函数。”); } { //构造代码块 System.out.println(“构造代码块2。”); }}输出结果:构造代码块1。构造代码块2。无参构造函数。静态代码块在java中使用static关键字声明的代码块。静态块用于初始化类,为类的属性初始化。静态代码块在类被加载的时候就运行了,而且只运行一次,并且优先于各种代码块以及构造函数。如果一个类中有多个静态代码块,会按照书写顺序依次执行。一般情况下,如果有些代码需要在项目启动的时候就执行,这时候就需要静态代码块。比如一个项目启动需要加载的很多配置文件等资源,我们就可以都放入静态代码块中。示例:public class testDemo { public static void main(String[] args ) { Test t1 = new Test(); System.out.println("**********"); Test t2 = new Test(); }}class Test{ static { //静态代码块 System.out.println(“静态代码块1。”); } //构造函数 public Test(){ System.out.println(“无参构造函数。”); } static { //静态代码块 System.out.println(“静态代码块2。”); } }输出结果:静态代码块1。静态代码块2。无参构造函数。**********无参构造函数。同步代码块使用synchronized(){}包裹起来的代码块,在多线程环境下,对共享数据的读写操作是需要互斥进行的,否则会导致数据的不一致性。同步代码块需要写在方法中。代码块执行顺序静态代码块 > 构造代码块 > 构造函数示例:public class testDemo { public static void main(String[] args ) { Test t = new Test(); }}class Test{ { //构造代码块 System.out.println(“构造代码块”); } //构造函数 public Test(){ System.out.println(“构造函数”); } static { //静态代码块 System.out.println(“静态代码块”); } }输出结果:静态代码块构造代码块构造函数