目录
一、局部代码块
位置:方法中的一对大括号{}
作用:限定变量的声明周期,提早释放内存,释放内存后变量不存在。
下面是代码示例:
/**
* @author Tweek
*/
public class BlockTest {
/**
* 局部代码块
*/
public static void main(String[] args) {
{
int num=20;
System.out.println(num);
}
//提前释放内存,故此时可以重新声明相同变量名的变量
int num=30;
System.out.println(num);
}
}
控制台输出:
20
30
二、构造代码块
位置:在类中的其余方法的外部的一对大括号{}
特点:在创建对象,执行构造方法的时候,就会执行构造代码块,且优先构造方法执行。即无论有参无参,该代码块都在构造方法内。
作用:有多个构造方法中,需要重复的代码,可以将此类重复的代码抽取到构造代码块中,从而提升代码的复用性。
下面是代码示例:
/**
* @author Tweek
*/
public class BlockTest {
/**
构造代码块
*/
public static void main(String[] args) {
Student student1 = new Student();
Student student2 = new Student(10);
}
}
class Student{
{
System.out.println("Have a Nice day!");
}
public Student() {
System.out.println("无参构造方法");
}
public Student(int num){
System.out.println("有参构造方法");
}
}
控制台输出:
Have a Nice day!
无参构造方法
Have a Nice day!
有参构造方法
三、静态代码块
位置:在类中的其余方法的外部的一对大括号{}
特点:需要通过static关键字修饰,随着类的加载而加载,并且只执行一次。因为在类加载时其只生成一次字节码文件,故在生成完一次字节码文件后,其后再创建该类对象并运行时并不会再次加载static代码块。
作用:在类加载的时候做一些数据初始化的操作。尤其是在应对复杂类的对象时有用。
下面是代码示例:
/**
* @author Tweek
*/
public class BlockTest {
public static void main(String[] args) {
Student student1 = new Student();
Student student2 = new Student(10);
}
}
class Student{
/**
* 静态代码块
*/
static{
System.out.println("STAAAAAATIC!");
}
{
System.out.println("Have a Nice day!");
}
public Student() {
System.out.println("无参构造方法");
}
public Student(int num){
System.out.println("有参构造方法");
}
}
控制台输出:
STAAAAAATIC!
Have a Nice day!
无参构造方法
Have a Nice day!
有参构造方法