JAVA类的生命周期,以及类的初始化时机
Posted ssskkk
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JAVA类的生命周期,以及类的初始化时机相关的知识,希望对你有一定的参考价值。
类的生命周期从类被加载、连接和初始化开始,到类被卸载结束。
只有当类处于生命周期时,java程序才能使用它,比如 调用类的静态属性和方法、或者创建类的实列
简要介绍
1:加载
类的加载时指把类的.class文件中的二进制读入到内存中,把它存放在运行时数据区的方法区内,然后在堆区创建一个java.long.Class对象用来封装类在方法区内的数据结构。并且向java程序提供了访问类在方法区内的数据结构接口。
类的加载器并不需要某个类"首次主动使用"时在加载它,java虚拟机规范允许类加载器预料某个类将要被使用时,预先加载它
2:连接
2.1:验证
2.2:准备
2.3:解析
3:初始化 给类的静态变量赋予正确的初始值
和加载不同,java虚拟机只有程序在首次使用一个类或者接口时才会初始化。
3.1:创建类的实列(new,反射,克隆,序列化)
3.2:调用类的静态方法
3.3:访问类的静态变量(可以看到static变量 在初始化的时,此时未必存在类的实列)
3.4:初始化一个类的子类。也就是说 子类的初始化会先初始化父类(调用父类的构造方法),这也就是Object类为什么会有一个默认的无参构造方法。
3.5:被java虚拟机标明为启动类的子类
补充:类加载的父亲委托机制
以上是关于JAVA类的生命周期,以及类的初始化时机的主要内容,如果未能解决你的问题,请参考以下文章