java 静态变量初始化顺序
2013-11-04 10:41
176 查看
Java 类初始化顺序在网上已经有很多文章了,这里不再谈那么多,仅仅谈下Java静态变量的初始化顺序,如果你是Java高手,并且自认为对这个顺序已经掌握到了炉火纯青的境界,请忽视这篇文章.
前天看了Y.BOY对AS程序员的《关于初始化静态变量的一些思考》,让我感觉这个东西很奇妙,他的问题也是从JAVA来的.然后我就做了些测试,发现与我想的很不一样.而且Java与AS的也不一样.今天就先将关于Java的记录下来.等日后再将AS的也记录下来。
这里先猜下控制台输出结果是什么?
OK, 或许你已经猜到下面了结果了,那么你还是熟悉Java的。
如果你不明白是为什么会输出上面的结果,那么我来告诉你。
Java静态变量初始化遵循以下规则:
静态变量会按照声明的顺序先依次声明并设置为该类型的默认值,但不赋值为初始化的值。
声明完毕后,再按声明的顺序依次设置为初始化的值,如果没有初始化的值就跳过。
看了这个就会明白,原来Test.a的值变化了三次。
声明时设置为0>>Test1::Test1里设置为1>>Test.a初始化为0
前天看了Y.BOY对AS程序员的《关于初始化静态变量的一些思考》,让我感觉这个东西很奇妙,他的问题也是从JAVA来的.然后我就做了些测试,发现与我想的很不一样.而且Java与AS的也不一样.今天就先将关于Java的记录下来.等日后再将AS的也记录下来。
/** * Java 测试代码 * Power by http://www.litefeel.com * @author lite3 */ public class Test { public static Test1 t = new Test1(); public static int a = 0; public static int b; public static void main(String[] arg) { System.out.println(Test.a); System.out.println(Test.b); } } class Test1 { public Test1() { Test.a++; Test.b++; } }
这里先猜下控制台输出结果是什么?
OK, 或许你已经猜到下面了结果了,那么你还是熟悉Java的。
如果你不明白是为什么会输出上面的结果,那么我来告诉你。
Java静态变量初始化遵循以下规则:
静态变量会按照声明的顺序先依次声明并设置为该类型的默认值,但不赋值为初始化的值。
声明完毕后,再按声明的顺序依次设置为初始化的值,如果没有初始化的值就跳过。
看了这个就会明白,原来Test.a的值变化了三次。
声明时设置为0>>Test1::Test1里设置为1>>Test.a初始化为0
2 | 0 1 |
相关文章推荐
- 【转】Java类的初始化顺序 (静态变量、静态初始化块、变量、初始化块、构造器)
- 关于Java运行时静态变量、非静态变量、构造方法初始化的顺序
- java中普通变量、静态变量、静态代码块初始化的顺序辨析
- java中普通变量、静态变量、静态代码块初始化的顺序辨析
- Java初始化顺序总结及其程序执行过程图- 静态变量、静态代码块、成员变量、构造函数
- Java静态方法,静态变量,初始化顺序
- java 类加载顺序 静态变量初始化顺序,何时触发类加载
- java中普通变量、静态变量、静态代码块初始化的顺序辨析
- Java中静态变量、块、非静态变量、块和构造器的初始化顺序
- Java静态方法,静态变量,初始化顺序
- Java初始化顺序(静态变量、静态初始化块、实例变量、实例初始化块、构造方法)
- java静态方法,静态变量,初始化顺序
- Java初始化顺序总结 - 静态变量、静态代码块、成员变量、构造函数
- Java初始化顺序总结 - 静态变量、静态代码块、成员变量、构造函数
- 【转】Java类的初始化顺序 (静态变量、静态初始化块、变量、初始化块、构造器)
- Java中静态变量和非静态变量的初始化顺序
- Java静态方法,静态变量,初始化顺序
- Java静态方法,静态变量,初始化顺序
- Java静态方法,静态变量,初始化顺序 static
- java中普通变量、静态变量、静态代码块初始化的顺序 收录总结