java之静态初始化块
2015-10-29 10:36
302 查看
Java 中可以通过初始化块进行数据赋值,如
在类的声明中,可以包含多个初始化块,当创建类的实例时,就会依次执行这些代码块。如果使用 static 修饰初始化块,就称为静态初始化块。
需要特别注意:静态初始化块只在类加载时执行,且只会执行一次,同时静态初始化块只能给静态变量赋值,不能初始化普通的成员变量。如下:
运行结果:
通过静态初始化块为变量num3赋值
通过初始化块为变量num2赋值
通过构造方法为变量num1赋值
num1:91
num2:74
num3:83
通过初始化块为变量num2赋值
通过构造方法为变量num1赋值
从以上输出结果,我们可以看到,程序运行时静态初始化块最先被执行,然后执行普通初始化块,最后才执行构造方法。由于静态初始化块只在类加载时执行一次,所以当再次创建对象 hello2 时并未执行静态初始化块。
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 时并未执行静态初始化块。
相关文章推荐
- JVM执行Java程序的过程中管理的内存空间
- Java:类中代码的执行顺序
- Java实现常见的7种排序算法
- Java中用JXL导出Excel代码详解
- hadoop学习笔记之<用eclipse开发>
- Java线程之CompletionService
- Java中导入、导出excel
- java之静态方法
- java实现链表和栈
- Java中的线程同步及线程死锁复习
- java 算法40题
- SSM框架——详细整合教程(Spring+SpringMVC+MyBatis)
- Spring中@Scheduled注解实现方法的任务调度
- springmvc4+hibernate4+activiti5.18(Maven)
- 通过Java代码实现手机号归属地查询
- Java基础 Day11 Exception
- java.util.regex包中类Pattern 正则表达式的构造摘要(一)
- 我的 Java 后端书架 (2016 年暖冬版)
- java Future 接口介绍
- Spring MVC入门示例