您的位置:首页 > 编程语言 > Java开发

java之静态初始化块

2015-10-29 10:36 302 查看
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 时并未执行静态初始化块。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: