文章目录

  • 前言:init和Clinit怎么产生的?
  • 1.init方法
    • 1.1.init方法什么时候被调用?用来做什么?
    • 1.2.那么实例变量赋值操作、非静态代码块、构造器这三者,哪一个会先执行呢?
    • 1.3.那么既然赋值操作和非静态代码块优先级是相同的,那么看下面代码分析能不能这样操作?
    • 1.4.分析如下代码,看init方法字节码指令
    • 1.5.分析如下代码,看你搞懂init方法没呢~!
  • 2.Clinit方法
    • 2.1.你会不会有个疑问,为什么需要Clinit方法?
    • 2.2.Clinit方法什么时候被调用?
    • 2.3.Clinit方法有什么作用呢?
    • 2.4.静态域赋值操作和静态代码块的顺序?
    • 2.5.那么既然静态域的赋值操作和静态代码块优先级是相同的,那么看下面代码分析能不能这样操作?
    • 2.6.你会不会有疑问为什么类变量会被分配在方法区(JDK8开始为元空间)?
    • 2.7.从字节码角度分析以下代码的初始化流程?
    • 2.8.分析如下代码,看你搞懂Cinit方法没呢~!
    • 2.9.来自我的灵魂拷问:

前言:init和Clinit怎么产生的?

public class ClinitAndInitTest {private Integer num = 2;private static Integer num2 = 3;
}


这两个方法是编译成字节码之后生成的(我们只在Java代码中定义了一个非静态和静态的变量),你觉得这两个方法有什么作用呢?看完你就明白了。


《JVM系列》深入浅出类加载机制中<init>和<Clinit>的区别【一篇即可搞懂初始化机制】相关推荐

  1. 【java】深入理解Java JVM虚拟机中init和clinit的区别

    1.概述 转载并且补充:深入理解Java JVM虚拟机中init和clinit的区别 原创 之所以来转载一下,是因为,有个学弟问了这个问题 这个知识点,回顾起来应该是我看 深入理解Java JVM虚拟 ...

  2. init.x java_详谈jvm--Java中init和clinit的区别

    init和clinit区别 ①init和clinit方法执行时机不同 init是对象构造器方法,也就是说在程序执行 new 一个对象调用该对象类的 constructor 方法时才会执行init方法, ...

  3. JVM系列之类加载器

    前言 上节我们介绍了类加载的时机和过程,对类加载有了个初步的认识,上节我们有不断提到一个东西:类加载器,那么什么是类加载器?又有哪些类加载器?类加载器之间的联系等等一些问题,今天我们将会围绕这些点展开 ...

  4. 蚊子凭啥只咬你?科学家用 5 年造出一批“脑子发光”的蚊子,终于搞懂背后机制

    为了发篇 Nature,他们一天用自己喂了 3000 只蚊子?! 听起来有些不可思议,但却是普林斯顿大学一群研究人员在做的事情 -- 他们试图找出这些蚊子专门吸人血的原因. 我们都知道,有不少蚊子会吸 ...

  5. 蚊子凭啥只咬你?他们用5年造出一批“脑子发光”的蚊子,终于搞懂背后机制丨Nature...

    明敏 萧箫 发自 凹非寺 量子位 | 公众号 QbitAI 为了发篇Nature,他们一天用自己喂了3000只蚊子?! 听起来有些不可思议,但却是普林斯顿大学一群研究人员在做的事情-- 他们试图找出这 ...

  6. 彻底搞懂GC机制和GC算法

    1. 分代 堆中内存分为新生代和老年代,其中新生代又分为Eden区.(Survivor)From区.(Surviver)To区,大致如图: 2. GC分类 2.1 新生代垃圾回收器:Minor GC/ ...

  7. 这一篇彻底搞懂JS中的prototype、__proto__与constructor真的很好

    文章目录 1. 前言 2. _ _ proto _ _ 属性 3. prototype属性 4. constructor属性 5. 总结 提示:不要排斥,静下心来,认真读完,你就搞懂了!(可以先看一下 ...

  8. Stream中map和flatmap的区别,一看就懂

    在日常开发中,我们经常会使用Stream来处理集合的操作. 其中,map是我们经常用到的api方法,同时呢,Stream也给我们提供了flatmap的方法. 这时候很多小伙伴就会搞不懂,这map和fl ...

  9. 【Vue系列】vuex详解,一篇彻底搞懂vuex

    目录 1. 理解vuex 1.1 vuex是什么 1.2 什么是状态管理模式 1.3 什么时候用vuex 1.4 vuex工作原理 2. 应用vuex 2.1 安装vuex 2.2 搭建vuex环境 ...

最新文章

  1. UIControl IOS控件编程 及UITextField的讲解
  2. 国企程序员是一种怎样的体验?
  3. 运用Parcelable将类序列化并绑定给Intent
  4. 文件,多级目录的拷贝 笔记学习
  5. 无法取消 Promise
  6. PRIMARY KEY 与 UNIQUE
  7. spark 过滤log
  8. iOS 让CoreData更简单些
  9. ADS2017破解后重启显示license失效,需要把EESoft Flexnet Licence Server启动类型设置为自动
  10. 《 两个人的江湖 》
  11. PS学习笔记(一):基础知识
  12. 软件设计师-计算机网络(刷题笔记)
  13. 数据挖掘之OneR算法(原来数据挖掘如此简单!)
  14. flutter CustomScrollView中使用Swiper做轮播图问题
  15. SQL优化不会?推荐4 款工具
  16. python绘制太阳系_如何利用Python动态模拟太阳系运转
  17. 完善人格的好办法 [转]
  18. 某公司申请到一个C类IP地址,但要连接6个的子公司,最大的一个子公司有 26台计算机,每个子公司在一个网段中,则子网掩码应设为?
  19. java添加坚挺_Java连载136-两种方式插入数据
  20. 2017-11-06 日语编程语言抚子 - 第三版特色初探 1

热门文章

  1. 当VS2010安装了Hide Main Menu 插件,发现菜单栏不见了,怎么办?
  2. html批量翻译 github,英文单词短语批量翻译工具WordListTranslator
  3. 如何更改计算机性能,如何修改注册表优化电脑性能 修改注册表优化电脑性能方法...
  4. cesium js 路径_Cesium开发学习路径
  5. java 修改ip_如何用脚本快速修改IP地址(Netsh)
  6. Linux记起始和结束时间,Linux历史命令的记住执行时间
  7. 为什么恋舞显示连接服务器失败,恋舞模式全攻略与技巧
  8. python pandas dataframe 转json_python-将嵌套的json转换为pandas dataframe
  9. 怎样快速识别 英文地址中包含非英文字符_[论文笔记]端到端的场景文本识别算法--CRNN 论文笔记...
  10. 汇编访问计算机端口,汇编总结(2):中断、端口、直接定址表