java类加载及初始化过程(静态变量、静态代码块、代码块、构造函数)
2016-08-06 13:58
399 查看
java类加载过程演示:
java类的加载过程简单的说分为三个阶段:加载、连接、初始化!对这三个阶段的详细解释,网上有很多,这里我就不啰嗦拉!下面通过用自己的一段简单代码 来演示java类加载的过程:
class A{ private int b = 4; private static int a = 5; static { System.out.println("父 a = "+a); } public A(){ System.out.println("我是父 类中的构造函数"); show(); } { System.out.println("我是父类中的代码块"); } { System.out.println("父 b = "+b); } static { System.out.println("我是父类静态代码块"); } public void show() { System.out.println("show fu"); } public static void show1() { System.out.println("fu show1 static method"); } } class B extends A{ public int c = 5; public static int d = 6; static { System.out.println("d = "+d); } public B(){ System.out.println("我是子类构造函数"); } static{ System.out.println("我是子类的静态代码块"); } { System.out.println("我是子类代码块"); } { System.out.println("c = "+c); } public void show() { System.out.println("show zi c = "+c); } public static void show1() { System.out.println("zi show1 static method"); } } public class hello { public static void main(String[] args) { B b = new B(); } }代码执行结果为:
最后总结:
列举两个类分别为 A ,B ;其中A 是B的父类!则加载过程如下:
1、加载B,发现B有直接父类A!则先加载A,为A中的静态成员分配内存,然后初始化A中的静态成员(按照代码执行的先后顺序初始化),A中静态成员初始化完成后,对B中的静态成员初始化;
2、静态的部分加载和初始化完成后,开始在堆中为B分配内存空间,并对B中的成员变量进行默认初始化即 c = 0;然后B调用自己的构造函数,发现B有直接父类A,则先调用A中的构造函数,A会调用B的间接父类Object,调用结束后,A中的成员变量b显示初始化,初始化完成后,调用A中的非静态代码块,A中非静态代码块执行结束后,在接着调用A 构造函数!
3、在2中步骤执行完毕后,回到B中 显示初始化B中的成员变量c = 5,调用B中的非静态代码块,接着调用B构造函数
相关文章推荐
- Java初始化顺序总结及其程序执行过程图- 静态变量、静态代码块、成员变量、构造函数
- Java初始化顺序总结 - 静态变量、静态代码块、成员变量、构造函数
- Java 类的实例变量初始化的过程 静态块、非静态块、构造函数的加载顺序
- Java 类的实例变量初始化的过程 静态块、非静态块、构造函数的加载顺序
- [转]Java初始化顺序总结 - 静态变量、静态代码块、成员变量、构造函数
- java成员变量,静态成员变量,静态代码块,代码块和构造函数等加载顺序
- Java初始化顺序总结 - 静态变量、静态代码块、成员变量、构造函数
- C++转Java自学之路(四)文档注释、静态代码块与对象初始化过程
- java中普通变量、静态变量、静态代码块初始化的顺序辨析
- java中普通变量、静态变量、静态代码块初始化的顺序辨析
- Java 代码块、成员变量初始化、构造函数初始化顺序
- Java重修之路(七)面向对象之静态,主函数,Doc文档,静态代码块,对象初始化过程,单例设计模式
- Java初始化-静态代码块、实例化代码块和构造函数的区分
- JAVA中父类与子类静态代码块、非静态代码块、构造函数的加载顺序
- Java类加载及变量初始化过程
- Java---类加载机制,构造方法,静态变量,(静态)代码块,父类,变量加载顺序
- java中普通变量、静态变量、静态代码块初始化的顺序辨析
- Java类加载及变量初始化过程
- Java类加载过程后,成员变量的初始化。