java中构造块的使用
在一个类中,如果一段语句没有放在方法里而是直接放在类中,则被称为构造块。
public class Test{
{
System.out.println("我是一个构造块");
}
}
如上面代码的表示即为构造块。
当一个对象被创建时,构造块就会被调用。构造块的调用是从上往下的,如下面的代码所示,当对象Test被创建时,先执行A构造块,再执行B构造块。
public class Test{
{
//构造块A
}
{
//构造块B
}
}
构造块与构造器:
构造块相当于构造器内除了this以外的第一条被执行的语句,考虑到下面的代码:
public class Test{
int a=10;
{
a=6;
}
public Test(){
this(a);
}
public Test(int n){
System.out.println(n);
System.out.println(a);
}
public static void main(String[] args){
Test t =new Test();
}
}
其打印结果为10,6;因为Test()构造器被调用后,先执行this(a),此时a=10,所以Test(int n)中n的值为10;由于Test(int n)中不含this;所以执行构造块,a=6;所以打印的值为10,6。
如果构造块被static修饰,则其为静态块,和其他静态的成员一样,静态块是在类被加载时执行的,所以通常静态块的执行在主方法前。