java类初始化顺序
发布时间:2020-12-14 06:32:38 所属栏目:Java 来源:网络整理
导读:先不考虑父类。 当创建类对象时,先初始化静态变量和静态块,然后是非静态变量和非静态代码块,然后是构造器。由于静态成员只会被初始化一次,所以如果静态成员已经被初始化过,将不会被再次初始化。 例如 A( System.out.println("A(" + maker + ")" A a1 =
先不考虑父类。 当创建类对象时,先初始化静态变量和静态块,然后是非静态变量和非静态代码块,然后是构造器。由于静态成员只会被初始化一次,所以如果静态成员已经被初始化过,将不会被再次初始化。 例如 A( System.out.println("A(" + maker + ")"
A a1 = A(1 A a2 = A(2 System.out.println("非静态的代码块" A a3 = A(3 System.out.println("静态块" A a4 = A(4 f() {System.out.println("f()" System.out.println("Test()" A a5 = A(5
}
输出为: A(14523A(2<span style="color: #000000;">)
非静态的代码块 A(3<span style="color: #000000;">) Test() 对于静态成员,不仅是初始化对象时才会初始化,当第一次引用静态变量或者静态函数时都会使静态成员初始化。 还是上面的代码,小改一下: A( System.out.println("A(" + maker + ")"
A a1 = A(1 A a2 = A(2 System.out.println("非静态的代码块" A a3 = A(3 System.out.println("静态块" A a4 = A(4 f() {System.out.println("f()" System.out.println("Test()" A a5 = A(5
}
这次将输出: A(145A(2<span style="color: #000000;">)
非静态的代码块 A(3<span style="color: #000000;">) Test() 然后考虑下父类。 当子类的静态域被初始化时候,那一定要先初始化父类的静态域。 当创建子类对象时,要先初始化静态域(如果之前未初始化),先是父类然后子类。之后初始化父类的非静态域和父类构造器,然后是子类。 例(新手起名废求破): XD( System.out.println("XD(" + maker +")"
System.out.println("Father()" XD xd = XD(1 XD xd1 = XD(2
Son System.out.println("Son()" XD xd = XD(3 XD xd1 = XD(4 f() { System.out.println("f()"
}
输出 XD(1324XD(2<span style="color: #000000;">) Father() XD(4<span style="color: #000000;">) Son() (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- IntelliJ IDEA 如何彻底删除项目的步骤
- java – 处理这个问题的正确设计是什么?
- Codeforces Round #590 D. Distinct Characters Queries
- java – 在MultiMap中计算出现次数
- 如何在java(struts)中保留下拉列表的选定值
- JAVA中如何自定义一个@Test注解呢?
- 通用的Java MySQL JDBC主从分离操作工具类
- ShutdownHook - Java 优雅停机解决方案
- 如何将inputstream转换为InputStreamsource或Datasource以在
- java – 如何通过selenium webdriver禁用Skype扩展