1、代码块的分类
局部代码块
public class test{
{
...
...
...
}
}
在一段大括号里面的大括号内的内容。
构造代码块
public class Student {
private String name;
private int age;
//构造代码块:
//写在成员位置的构造代码块
//作用:可以把多个构造方法中重复的代码抽取出来
//执行时:我们在创建本类对象时会先执行构造代码块再执行构造方法
//已经不怎么使用了,因为不够灵活
//现在一般采取this调用构造的方法来使用
//又或者调用方法的方式来使用
{
System.out.println("开始创建对象了");
}
public Student() {
}
public Student(String name, int age) {
this.name = name;
this.age = age;
}
}
静态代码块
public class Student {
private String name;
private int age;
//执行时机
//随着类的加载而加载,且只执行一次
//可以用来初始化
static{
System.out.println("开始创建对象了");
}
public Student() {
}
public Student(String name, int age) {
this.name = name;
this.age = age;
}
}
随着类的加载而加载,且执行一次
可以用来初始化。
2、代码块的作用
局部代码块:
提前结束变量的生命周期节约空间(现在已经抛弃)。
构造代码块:
抽取构造方法中相同的内容。(不够灵活)
我们通常不使用,如果有这方面的需求,我们可以采取以下两个方式。
1:在实参构造中写入重复的内容,在空参构造中用this(null,null.....)赋初始值的方式调用实参构造。
2:单独创建一个方法,需要的时候调用方法。
静态代码块:
数据的初始化。
为什么要用静态代码块的方式进行数据初始化?
因为静态代码块随着类的加载而加载,只执行一次。
如果多次调用main函数会导致多次重复赋予初始值,导致程序错误。