Java中的代码块可以分为四类
一、普通代码块
直接在一个方法中出现的{ }就是一个普通代码块
public void save(){
System.out.println("普通代码块");
}
二、构造代码块
直接在类中定义的没有加static关键字的就是构造代码块
class Student {
{
System.out.println("构造代码块");
}
}
三、静态代码块
直接在类中定义使用static关键字的代码块,主要用来为类属性初始化
class Student {
static {
System.out.println("静态代码块");
}
}
四、同步代码块
使用synchronized(Object obj)包围的代码块,在多线程环境下,对共享数据进行读写操作是需要互斥进行的,否则会导致数据不一致。
synchronized(Object obj){
//code
}
测试代码:
package com.codingpro.codeblock;
public class FourBlock {
public static void main(String[] args) {
Student student = new Student();
student.more();
}
}
class Student {
{
System.out.println("构造代码块");
}
static {
System.out.println("静态代码块");
}
public Student() {
System.out.println("构造函数");
}
public void more(){
System.out.println("还有一个同步代码块,就不列出来了");
}
}
运行结果:
静态代码块
构造代码块
构造函数
还有一个同步代码块,就不列出来了
由此也可以看出一些规律:最早执行的肯定是静态代码块,构造代码块在构造函数之前执行。