Java中类的初始化与实例化总结(类初始化的触发时机,类的实例化触发时机,new一个对象的过程)

今天是2020年最后一个工作日了,祝各位阅遍山河,仍觉人间值得!

 

全是干货,一网打尽类的基础知识!先看看下面的问题都能回答上来吗?

  • 描述new一个对象的过程,并结合例子说明。

  • 类初始化的触发时机。

  • 多线程进行类的初始化会出问题吗?

  • 类的实例化触发时机。

  • <clinit>()方法和<init>()方法区别。

  • 在类都没有初始化完毕之前,能直接进行实例化相应的对象吗?

  • 类的初始化过程与类的实例化过程的异同?

  • 一个实例变量在对象初始化的过程中会被赋值几次?

描述new一个对象的过程

先上图,再描述:

类加载链接
类加载链接
 

 

类初始化

 

对象实例化

Java中对象的创建过程包括 类初始化和类实例化两个阶段。而new就是创建对象的一种方式,一种时机。当执行到new的字节码指令的时候,会先判断这个类是否已经初始化,如果没有初始化就要进行类的初始化,也就是执行类构造器<clinit>()方法。如果已经初始化了,就直接进行类对象的实例化。

  • 类的初始化,是类的生命周期中的一个阶段,会为类中各个类成员赋初始值。
  • 类的实例化,是指创建一个类的实例的过程。

但是在类的初始化之前,JVM会保证类的加载,链接(验证、准备、解析)四个阶段都已经完成&#

  • 4
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值