1.进行初始化

  • 在Java中由{}括起来的代码就是代码块,它主要是用来做初始化的,根据类的实例过程​,最后会初始化构造器中的代码,但代码块会先于构造器执行,​​
  • 代码块的使用方法_构造器​​
  • 而代码块适合用于匿名类的初始化,这种类没有类名,无法用构造器,例:这个就是匿名类的书写
Son s=new Son() {
{
super.name2="this";
}
@Override
public void show(String name2) {
}
};

2.非静态代码块

  • 输出语句。
  • 类属性的声明初始化。
  • 调用静态和非静态方法。
  • 每次创建对象,都执行一次,​先于构造器

例:

public class Water{
String name;
public Water() {
System.out.println("构造器的输出");
}
public static void show(){
System.out.println("这是一个方法");
}
{
this.name="张三";
System.out.println("代码块的输出");
}
{
System.out.println("代码块2");
show();
}
}

这个是测试类:

public class Test {
public static void main(String[] args) {
Water w=new Water();
System.out.println(w.name);
}
}

结果:

代码块的使用方法_代码块_02


3.静态代码块

  • 输出语句。
  • 类属性的声明初始化。
  • 调用静态方法,不能调用非静态的方法。
  • 只执行一次。
  • 优先于非静态代码块。
  • 多个时,按从上往下依次执行。

public class Water{
String name;
public Water() {
System.out.println("构造器的输出");
}
public static void show(){
System.out.println("这是一个方法");
}
{
this.name="张三";
System.out.println("代码块的输出");
}
static{//这里添加了静态属性,测试类不变
System.out.println("代码块2");
show();
}
}

结果:

代码块的使用方法_初始化_03