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

本文详细探讨了Java中类的初始化和实例化的流程,包括new对象的过程、类初始化的触发时机、多线程初始化的安全性、<clinit>()与<init>()的区别以及实例变量的赋值次数。内容涵盖类加载、链接、静态变量初始化、静态代码块、实例化阶段的构造器调用等关键知识点。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

 

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

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

  • 类初始化的触发时机。

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

  • 类的实例化触发时机。

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

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

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

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

描述new一个对象的过程

先上图,再描述:

类加载链接
类加载链接
 

 

类初始化

 

对象实例化

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

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

但是在类的初始化之前

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值