当前位置: 首页 > article >正文

3、java虚拟机-类的生命周期-初始化阶段(与程序员有关)

一 、静态代码块执行顺序和字节码文件中的执行顺序以及什么赋值。

类的生命周期-初始化阶段-被static所修饰的常量才会被赋予值
在这里插入图片描述
初始化阶段-代码中静态代码块和静态变量的顺序和字节码中的执行顺序是一致的。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

二、4种情况下,类会被初始化。

1、怎样查看类是否被初始化了?

1.1 通过在代码中进行打印输出
在这里插入图片描述
-在代码里面进行输出,查看类会不会初始化
在这里插入图片描述

1.2 通过虚拟机参数-查看类会不会初始化
在这里插入图片描述
在这里插入图片描述

如果当前的类,中的静态变量被final所修饰,那么这个类是不会被初始化的。
在这里插入图片描述

2、ClassforName所调用的类会被初始化,不过ClassforName方法的重载方法中可以设置是否可以进行初始化。

在这里插入图片描述
3、通过new创建一个该对象时候,会被初始化。
在这里插入图片描述

4、执行Main方法的当前类会被初始化。

三、举例:执行顺序笔试题

在这里插入图片描述
在这里插入图片描述

构造方法字节码指令
在这里插入图片描述
在这里插入图片描述

一个类被初始化和加载,其中的静态代码块只会执行一次,而对象可以创建多次所以构造方法也可以执行多次,而代码块,通过字节码文件完们可以看到,是放到构造方法的字节码指令中执行的,且先执行,所以有了上述的输出结果。

四、什么情况下不会执行clinit(类初始化)字节码指令

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

前三个阶段总结:
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
其中除非要执行方法,表示右边需要一个方法进行计算例如Integer.valueof(1);


http://www.kler.cn/a/274682.html

相关文章:

  • 腾讯云智能结构化OCR:以多模态大模型技术为核心,推动跨行业高效精准的文档处理与数据提取新时代
  • 基于DockerCompose搭建Redis主从哨兵模式
  • 2023年厦门市第30届小学生C++信息学竞赛复赛上机操作题(三、2023C. 太空旅行(travel))
  • 时间管理系统|Java|SSM|JSP|
  • WPF 使用LibVLCSharp.WPF实现视频播放、停止、暂停功能
  • imx6ull qt多页面控制系统(正点原子imx系列驱动开发)
  • JRTLIS登录
  • 前端小白的学习之路(lessscss)
  • 百度交易中台之系统对账篇
  • 如何利用机器学习和Python编写预测模型来预测设备故障
  • 代码随想录阅读笔记-字符串【翻转字符串中单词】
  • Unity构建详解(2)——SBP的初始设置和脚本编译
  • 【自记录】VS2022编译OpenSSL1.0.2u
  • 电装DENSO 嵌入式岗笔试
  • Qt + HTTP 线程交互类封装
  • MNN createSession 之创建流水线后端(四)
  • 记录解决问题--activiti8.2 流程图图片由png改为svg前端不显示图片问题
  • word excel ppt转pdf
  • 常见传感器的原理 和 常见滤波算法实现
  • 开源模型应用落地-安全合规篇-模型输出合规性检测(三)
  • Bert的一些理解
  • 同步方法和同步块,哪个是更好的选择?什么是线程同步和线程互斥,有哪几种实现方式?
  • (简单成功)Mac:命令设置别名
  • 原生html vue3使用element plus 的树tree上移下移案例源码
  • 轻松解锁微博视频:基于Perl的下载解决方案
  • java算法题每日多道