杭州IT培训
美国上市IT培训机构

400-111-8989

java新手收:java类生命周期概念

  • 时间:2022-04-07 13:41
  • 发布:转载
  • 来源:网络

本文达小编为大家带来的是新手程序员需要掌握的java类生命周期的一些基础知识。一起看看吧。

介绍

1

一个java类的完整的生命周期会经历加载、连接、初始化、使用、和卸载五个阶段:

加载

主要是:把类的信息加载到方法区中,并在堆中实例化一个Class对象。

加载方式

根据类的全路径加载class文件

从jar的包中读取class文件

根据一定的规则实时生成,比如设计模式中的动态代理模式,就是根据相应的类自动生成它的代理类。

加载的时期

不是jvm启动就加载,而是在真是使用的时候才会触发加载。

new 一个类的时候

调用类的静态方法,以及读取或者修改一个类的静态字段的时候(不是常量)

这个类是程序的入口类

对这个类进行反射的时候(执行了上面的行为)

连接

一般会跟加载阶段和初始化阶段交叉进行。

验证

验证一下这个类是否合法,

字节码格式是否合法

变量和方法是否有重复

继承和实现是否符合标准

。。。

准备

给静态变量赋默认的初始值(不包括非静态变量)

解析

把符合引用转换为直接引用。

比如我们要在内存中找一个类里面的一个叫做show的方法,显然是找不到。但是在解析阶段,

jvm就会把show这个名字转换为指向方法区的的一块内存地址,比如c17164,通过c17164就可以找到show这个方法具体分配在内存的哪一个区域了。

这里show就是符号引用,而c17164就是直接引用。

在解析阶段jvm会将所有的类或接口名、字段名、方法名转换为具体的内存地址。

初始化

时机

和加载的时机一样,更准确的说初始化之前必须先经过加载,所以他们基本一样

new 一个类的时候

调用类的静态方法,以及读取或者修改一个类的静态字段的时候(不是常量)

这个类是程序的入口类

对这个类进行反射的时候(执行了上面的行为)

过程

按照顺序自上而下运行类中的【变量赋值语句】和【静态语句】,

如果有父类,则先按照顺序运行父类中的变量赋值语句和静态语句。

使用

使用阶段包括主动引用和被动引用。

主动引用(会引起类的初始化)

new 一个类的时候

调用类的静态方法,以及读取或者修改一个类的静态字段的时候(不是常量)

这个类是程序的入口类

对这个类进行反射的时候(执行了上面的行为)

被动引用(不会引起类的初始化)

引用父类的静态字段

以上的内容仅适用于java新手,希望对java的小伙伴们有所帮助。

预约申请免费试听课

怕钱不够?就业挣钱后再付学费!    怕学不会?从入学起,达内定制课程!     担心就业?达内多家实践企业供你挑选 !

【免责声明】本文部分系转载,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。如涉及作品内容、版权和其它问题,请在30日内与联系我们,我们会予以更改或删除相关文章,以保证您的权益!"
上一篇:程序员职场经验分享
下一篇:Java新人必须掌握的英语词组汇总

Java 后端有哪些不用学的技术?

分布式存储之数据切片

策略模式:巧妙替代你的if-else

sorted()之正序倒序

  • 扫码领取资料

    回复关键字:视频资料

    免费领取 达内课程视频学习资料

Copyright © 2023 Tedu.cn All Rights Reserved 京ICP备08000853号-56 京公网安备 11010802029508号 达内时代科技集团有限公司 版权所有

选择城市和中心
江西省

贵州省

广西省

海南省