java之静态初始化块

Java 中可以通过初始化块进行数据赋值,如

public class HelloWorld {


	/**
	 * @param args
	 */
	String name;//定义一个成员变量
	//通过初始化块为成员变量赋值
	{
		name = "myworld";
	}
}


在类的声明中,可以包含多个初始化块,当创建类的实例时,就会依次执行这些代码块。如果使用 static 修饰初始化块,就称为静态初始化块。

需要特别注意:静态初始化块只在类加载时执行,且只会执行一次,同时静态初始化块只能给静态变量赋值,不能初始化普通的成员变量。如下:

public class HelloWorld {

	/**
	 * @param args
	 */
	int num1;//声明变量num1
	int num2;//声明变量num2
	static int num3;//声明静态变量num3
	public HelloWorld(){
		num1 = 91;
		System.out.println("通过构造方法为变量num1赋值");
	}
	{//初始化块
		num2 = 74;
		System.out.println("通过初始化块为变量num2赋值");
	}
	static{//静态初始化块
		num3 = 83;
		System.out.println("通过静态初始化块为变量num3赋值");
	}
	public static void main(String[] args) {
		HelloWorld helloWorld = new HelloWorld();//创建类的对象helloWorld
		System.out.println("num1:"+helloWorld.num1);
		System.out.println("num2:"+helloWorld.num2);
		System.out.println("num3:"+num3);
		HelloWorld helloWorld2 = new HelloWorld();//创建类的对象helloWorld2
	}
}

运行结果:

通过静态初始化块为变量num3赋值
通过初始化块为变量num2赋值
通过构造方法为变量num1赋值
num1:91
num2:74
num3:83
通过初始化块为变量num2赋值
通过构造方法为变量num1赋值


从以上输出结果,我们可以看到,程序运行时静态初始化块最先被执行,然后执行普通初始化块,最后才执行构造方法。由于静态初始化块只在类加载时执行一次,所以当再次创建对象 hello2 时并未执行静态初始化块。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值