java代码块的理解
package 代码块;
class mmm{
//构造块
{
System.out.println("mmm 1 普通块");//每次实例化都执行一次,且在构造方法之前。
}
//静态代码块
static {
System.out.println("mmm 2 static");//优先于构造方法和普通块,且只执行一次
}
//构造方法
public mmm() {
System.out.println("mmm 3 构造方法");
}
}
public class 代码块 {
public static void main(String[] args) {
// TODO Auto-generated method stub
{
int x = 1;
System.out.println("主类 1 普通块 "+x);//在主类中 普通块
}
int x = 2;
System.out.println("主类 3 mian方法 "+x);
new mmm();
new mmm();
new mmm();
}
{
System.out.println("主类 4 普通块");//在主类中main之外 普通块不会调用
}
//主类静态代码块
static {
System.out.println("主类 2 static");//在主类中main之外 普通块会调用,且在main方法之前
}
}
输出结果:
1 主类 2 static 2 主类 1 普通块 1 3 主类 3 mian方法 2 4 mmm 2 static 5 mmm 1 普通块 6 mmm 3 构造方法 7 mmm 1 普通块 8 mmm 3 构造方法 9 mmm 1 普通块 10 mmm 3 构造方法
总结:
在一个类中,构造块每次实例化都会执行,且优先于构造方法,static构造块又称为静态代码块,更优先于构造块调用,且只调用一次,一般用来初始化静态属性。
浙公网安备 33010602011771号