Mobile wallpaper 1Mobile wallpaper 2Mobile wallpaper 3Mobile wallpaper 4Mobile wallpaper 5Mobile wallpaper 6Mobile wallpaper 7Mobile wallpaper 8
906 字
5 分钟
Java:代码块
2026-03-01

目录#

一、代码块概念及其分类#

使用{}定义的一段代码称为代码块,分为:普通代码块、构造代码块、静态代码块、同步代码块。

1.普通代码块#

定义在方法中的代码块,例如:

public class TestDemo {
public void show(){
{
System.out.println("普通代码块运行中");
}
}
}

但是一般来说不常用

2.构造代码块#

也称作实例代码块,定义在类中,用于初始化实例成员变量。

public class TestDemo {
public int age;
public double weight;
{
this.age = 18;
this.weight = 60;
System.out.println("实例代码块运行中");
}
}

实例代码块只会在创建对象的时候才会执行。

3.静态代码块#

用修饰符static修饰的代码块,一般用于初始化静态成员变量。

public class TestDemo {
public static String name = "Tim";
static {
name = "Timi";
System.out.println("静态代码块1运行中");
}
}

静态代码块有以下特点:
1.静态代码块只会运行一次。
2.静态成员变量是类的属性,因此是在JVM开辟空间的时候初始化的。
3.如果代码中有多个静态代码块,会按照先后顺序合并运行。

二、代码块运行顺序#

对于下列的类

public class TestDemo {
public static String name = "Tim";
public int age;
public double weight;
// 实例代码块1
{
this.age = 18;
this.weight = 60;
System.out.println("实例代码块1运行中");
}
// 静态代码块1
static {
name = "Timi";
System.out.println("静态代码块1运行中");
}
// 构造方法
public TestDemo(int age, double weight) {
System.out.println("构造方法开始执行");
this.age = age;
this.weight = weight;
System.out.println("构造方法结束执行");
}
// 实例代码块2
{
System.out.println("实例代码块2运行中");
}
// 静态代码块2
static {
System.out.println("静态代码块2运行中");
}
public void show() {
//普通代码块
{
System.out.println("普通代码块(局部代码块)运行中");
}
System.out.println("姓名:" + name + " 年龄:" + age + " 体重:" + weight);
}
}

我们在Main类中对代码块运行顺序进行测试,Main类如下:

public class Main {
public static void main(String[] args) {
System.out.println("第一次创建对象:");
TestDemo obj1 = new TestDemo(20, 70.5);
System.out.println("\n第二次创建对象:");
TestDemo obj2 = new TestDemo(25, 75.0);
System.out.println("\n调用show方法:");
obj1.show();
}
}

测试结果为:

第一次创建对象:
静态代码块1运行中
静态代码块2运行中
实例代码块1运行中
实例代码块2运行中
构造方法开始执行
构造方法结束执行
第二次创建对象:
实例代码块1运行中
实例代码块2运行中
构造方法开始执行
构造方法结束执行
调用show方法:
普通代码块(局部代码块)运行中
姓名:Timi 年龄:20 体重:70.5

可以发现哪怕静态代码块在实例代码块的后面,静态代码块也是先执行的,这是因为静态代码块是在加载类的时候运行进行初始化的,执行顺序是静态代码块>实例代码块>构造函数
并且由于一次运行代码只需要加载一次类,因此静态代码块只会运行一次,于是可以看到只有第一次创建对象的时候静态代码块才会运行,第二次创建对象的时候运行的就只有实例代码块和构造函数了。

下一篇讲继承之后会继续讲父类和子类的代码块的运行顺序问题。

Java:代码块
https://blog.csdn.net/2501_93882415/article/details/158508329?spm=1001.2014.3001.5502
作者
Mem0rin
发布于
2026-03-01
许可协议
MIT

部分信息可能已经过时

封面
Sample Song
Sample Artist
封面
Sample Song
Sample Artist
0:00 / 0:00