1.进行初始化
- 在Java中由{}括起来的代码就是代码块,它主要是用来做初始化的,根据类的实例过程,最后会初始化构造器中的代码,但代码块会先于构造器执行,
-
- 而代码块适合用于匿名类的初始化,这种类没有类名,无法用构造器,例:这个就是匿名类的书写
Son s=new Son() {
{
super.name2="this";
}
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);
}
}
结果:
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();
}
}
结果: