前言
上一篇文章已经说了Java中的构造方法,它是在创建对象的时候JVM自动会执行的一种方法。另外在Java中还有一个名为“构造代码块”的东西,他和构造方法一样都是在创建对象的时候会自动执行的,构造代码块要写在与构造方法同一级。
代码块的类别有如下三种:
构造代码块
局部代码块
静态代码块
构造代码块为其中一种。
代码
要想懂得起,还是要看看代码,如下:
public class StructureCodeBlock {
//构造代码块
{
System.out.println("This is StructureCodeBlock");
}
public static void main(String[] args){
StructureCodeBlock s = new StructureCodeBlock();
}
}
优先级
若在一个类中同时含有成员变量、构造方法、构造代码块的时候,优先顺序如下:
成员变量 | 构造代码块>构造方法
但是Why?接着往下看:
Java编译器编译一个Java源文件的时,会把成员变量的声明语句提至一个类的最前端。
成员变量的初始化以及代码块的代码都是会被移至构造方法中去执行。
成员变量的初始化与构造代码块的代码是按照当前代码的顺序去执行的,构造方法中的原代码会最后进行执行。
可以看看如下代码就懂了。
public class StructureCodeBlock {
//成员变量
public int num = 1000;
//构造方法
public StructureCodeBlock(){
this.num = 3000;
}
//构造代码块
{
this.num = 2000;
}
public static void main(String[] args){
StructureCodeBlock s = new StructureCodeBlock();
System.out.println(s.num);
}
}
最终的运行结果为:3000
后记
前方的路程遥远曲折坎坷,问问自己:Are you ready?