浏览 3748 次
锁定老帖子 主题:Java中类的初始化顺序
精华帖 (0) :: 良好帖 (0) :: 新手帖 (1) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2009-06-24
最后修改:2009-06-24
这是从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(); } } //********************** //输出结果为; //********************** //静态变量 //静态初始化块 //变量 //初始化块 //构造器
下面是子类和父类中静态变量、变量以及构造函数的初始化顺序。
public class InitialOrder 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 InitialOrder() { System.out.println("子类--构造器"); } public static void main(String[] args) { new InitialOrder(); } } 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("父类--构造器"); } } //********************** //输出结果为; //********************** //父类--静态变量 //父类--静态初始化块 //子类--静态变量 //子类--静态初始化块 //父类--变量 //父类--初始化块 //父类--构造器 //子类--变量 //子类--初始化块 //子类--构造器
声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2009-06-24
有时间看这个..
不如把 think in java 好好看看.. 然后自己写两行代码 debug 一下就彻底明白了.. 磨刀不误砍柴工.. |
|
返回顶楼 | |
发表时间:2009-06-24
liufeng820 写道 磨刀不误砍柴工.. 恩 好的 谢谢哦~ |
|
返回顶楼 | |
发表时间:2009-06-24
这两天正在看那本上学时发的原版书,看着依然崭新的书,很是抑郁。。。
而且发现要想对整章有个总体的认识,那就得反复得看,看它个五六遍 |
|
返回顶楼 | |