莫听穿林打叶声,何妨吟啸且徐行。
苏轼《定风波·莫听穿林打叶声》
一、格式
构造代码块在类中直接定义,代码放在直接{}里面没有任何其他关键字(如void、static等)修饰也无需任何参数。如:
{
System.out.print("这是一个构造代码块");
}
二、执行时机
构造代码在创建对象时被调用,每次创建对象时(也就是new一个对象时,而不是声明一个对象时)都会被调用且仅调用一次,如:
public class demo {
public static void main(String args[]) {
System.out.println("声明一个test对象:");
test a;//仅声明对象,故不会调用构造代码块
System.out.println("声明并创建一个test对象:");
test b = new test();//创建对象,调用一次构造代码块
System.out.println("重新创建一个test对象:");
b = new test();//创建对象,调用一次构造代码块
System.out.println("再次创建一个test对象:");
new test();//创建对象,调用一次构造代码块
}
}
class test {
{
System.out.println("这是一个构造代码块");
}
}
运行结果:
三、作用
由于只要创建对象构造代码块都会执行一次,故构造代码块可以用于初始化成员变量、统计创建对象的次数等。