java类初始化顺序
来源:互联网 发布:传销金字塔算法 编辑:程序博客网 时间:2024/06/10 23:45
本篇复习一下关于java类初始化的顺序,温故而知新还是很有道理的。
下面是java类初始化的顺序:
(静态变量、静态初始化块)>(变量、初始化块)>构造器
下面通过几个比较简单的例子来验证。
下面是解决了在单个类中成员初始化的顺序:
public class InitialOrderTest { // 静态变量 public static String staticField = "静态变量"; // 变量 public String field = "变量"; // 静态初始化块 static { System.out.println(staticField); System.out.println("静态初始化块"); } // 初始化块 { System.out.println(field); System.out.println("初始化块"); } // 构造器 public InitialOrderTest() { System.out.println("构造器"); } public static void main(String[] args) { new InitialOrderTest(); } }运行以上代码,我们会得到如下的输出结果:
- 静态变量
- 静态初始化块
- 变量
- 初始化块
- 构造器
下面代码验证了父类和子类的初始化顺序:
class Parent { // 静态变量 public static String p_StaticField = "父类--静态变量"; // 变量 public String p_Field = "父类--变量"; // 静态初始化块 static { System.out.println(p_StaticField); System.out.println("父类--静态初始化块"); } // 初始化块 { System.out.println(p_Field); System.out.println("父类--初始化块"); } // 构造器 public Parent() { System.out.println("父类--构造器"); } } public class SubClass extends Parent { // 静态变量 public static String s_StaticField = "子类--静态变量"; // 变量 public String s_Field = "子类--变量"; // 静态初始化块 static { System.out.println(s_StaticField); System.out.println("子类--静态初始化块"); } // 初始化块 { System.out.println(s_Field); System.out.println("子类--初始化块"); } // 构造器 public SubClass() { System.out.println("子类--构造器"); } // 程序入口 public static void main(String[] args) { new SubClass(); } }
运行一下上面的代码,结果马上呈现在我们的眼前:
- 父类--静态变量
- 父类--静态初始化块
- 子类--静态变量
- 子类--静态初始化块
- 父类--变量
- 父类--初始化块
- 父类--构造器
- 子类--变量
- 子类--初始化块
- 子类--构造器
下面验证了静态变量和静态初始化块之间、变量和初始化块之间的先后顺序:
public class TestOrder { // 静态变量 public static TestA a = new TestA(); // 静态初始化块 static { System.out.println("静态初始化块"); } // 静态变量 public static TestB b = new TestB(); public static void main(String[] args) { new TestOrder(); } } class TestA { public TestA() { System.out.println("Test--A"); } } class TestB { public TestB() { System.out.println("Test--B"); } }
运行上面的代码,会得到如下的结果:
- Test--A
- 静态初始化块
- Test--B
阅读全文
0 0
- JAVA 类初始化顺序
- Java类初始化顺序
- java类初始化顺序
- java类初始化顺序
- JAVA类 初始化顺序
- java类初始化顺序
- java 类初始化顺序
- java类初始化顺序
- java类初始化顺序
- java类初始化顺序
- java类初始化顺序
- java类初始化顺序
- java类初始化顺序
- java类初始化顺序
- Java类初始化顺序
- java类初始化顺序
- java类初始化顺序
- java类初始化顺序
- trafodion表元数据破坏,hbase数据正常情况下恢复trafodion表数据步骤
- A
- 框架串讲
- hdu 1077 圆覆盖的最大点数
- 机智云受邀参加2017中国ISV生态系统峰会
- java类初始化顺序
- Java8接口的默认方法
- HDU1052 Tian Ji -- The Horse Racing(贪心)
- MD5加密算法源码
- 周志华机器学习 西瓜书(PDF) 斯坦福大学机器学习视频 机器学习基石+技法 邹博机器学习 七月在线机器学习 资源下载
- Python cv2灰度图转伪彩图
- hdu 1004 Let the Balloon Rise
- 关于ggplot2的一些用法
- B