字节码中的两个方法init,clinit
2019独角兽企业重金招聘Python工程师标准>>>
<init>方法
在JVM层面每一个构造方法都有一个特殊的名字叫<init>,这个名字是在编译器中就提供了的, 由于<init>不规范的java命名,所以我们在java代码里是没法直接使用的,一个实例的初始化方法在虚拟机中是通过调用invokespecial指令来完成的。
<clinit>方法
同样对于类或者接口的静态程序块,在JVM层面也给了他一个特殊的名字<clinit>,无论是类或者接口在被加载到class loader的时候,Java虚拟机都会调用这个类或接口的<clinit>的方法,这个方法是个无参的,返回类型为void方法,这个方法名也是编译器指定的,由于这个方法名并不是一个规范的方法名,所以我们无法在代码中直接使用。
说了这么多,其实读到这里只要记住两点:在字节码层面<init>表示构造方法,<clinit>表示静态程序块。
ref:The JavaTM Virtual Machine Specification(Second Edition) 3.9 Specially Named Initialization Methods
转载于:https://my.oschina.net/u/437581/blog/518113
字节码中的两个方法init,clinit相关推荐
- 欧尼酱讲JVM(08)——字节码中方法内部结构的剖析
用到的工具--Jclasslib IDEA提供了插件,很方便. 首先 先看一段代码: public class LocalVariablesTest {private int count = 0;pu ...
- 【Android 逆向】启动 DEX 字节码中的 Activity 组件 ( 使用 DexClassLoader 获取组件类失败 | 失败原因分析 | 自定义类加载器没有加载组件类的权限 )
文章目录 一.使用 DexClassLoader 获取组件类失败报错 二.失败原因分析 一.使用 DexClassLoader 获取组件类失败报错 在上一篇博客 [Android 逆向]启动 DEX ...
- 【Android 逆向】启动 DEX 字节码中的 Activity 组件 ( 在 PathClassLoader 和 BootClassLoader 之间插入 DexClassLoader )
文章目录 前言 一.在 PathClassLoader 和 BootClassLoader 之间插入 DexClassLoader 1.创建 DexClassLoader 2.使用 DexClassL ...
- Object类中的两个方法——wait和notify使用总结
Object类中的wait .和 notify方法是用来处理线程的方法,既然定义在Object类中,两个方法的重要程度可见一斑: 两个方法的使用上都很复杂:通过阅读API获得更多对方法的理解: The ...
- 解决微信扫码下载的两个方法
解决微信扫码下载有两个方法:一是去腾讯开发平台http://open.qq.com/上传自己的应用,二是弄一个提示页,提示用户用其他浏览器打开链接. 上传应用到腾讯开发平台 把应用上传到腾讯开发平台, ...
- 设计一个接口, 并设计一个实现类实现该接口,演示它们的使用。具体,创建一个名称为Person的接口,在接口中定义两个方法sayHello()和sayBye()。
设计一个接口, 并设计一个实现类实现该接口,演示它们的使用. 具体,创建一个名称为Person的接口,在接口中定义两个方法sayHello()和sayBye().然后,创建两个实现了Person接口的 ...
- MATLAB 保存imshow绘制图片到指定文件夹中的两种方法
MATLAB 保存imshow绘制图片到指定文件夹中的两种方法 imwrite函数 imwrite(image,filename) imwrite(image,filename)是将图像数据image ...
- Python:如何查看一个对象有哪些属性、方法以及查询源码中只有pass的方法的参数
Python:如何查看一个对象有哪些属性.方法以及查询源码中只有pass的方法的参数 1.问题背景 2.解决思路 2.1.查看对象有哪些属性或方法 2.1.1.dir()函数 2.1.2.help命令 ...
- 水平集方法引入主动轮廓模型算法中的两种方法
水平集方法引入主动轮廓模型算法中的两种方法 1.传统的基于主动轮廓模型和水平集理论的方法 2.变分水平集方法 在讲解水平集理论在主动轮廓模型中的应用前,我们先用流程图说明一下常见的处理主动轮廓模型的流 ...
最新文章
- vim 语法高亮显示
- python零基础有用吗-10天搞定Python,告诉你有什么用?
- it oracle 培训,Oracle数据库技术培训_OracleDBA数据库工程师_Oracle数据库在线学习视频教程_IT职业培训-51CTO学院_精培学院...
- XidianOJ 1176 ship
- MVC中helper的用法。
- nvml.dll 英伟达公司提供的动态库用途
- mysql监控平台怎么做_MySQL监控平台的构建方法
- 玩转 SpringBoot 2 之整合 WebSocket 篇
- 青岛大学计算机科学技术学院几本,郝蓉-青岛大学计算机科学技术学院
- linux shell 遍历指定目录下的所有文件夹
- qt结合arcgis进行开发
- 【第133期】 游戏策划:给@1的简历分析
- mysql中数据处理小技巧
- react-router-dom文档
- 你不知道的JavaScript APIs
- React-router - 如何在url中带参数?在url中带参数的几种方法
- 在Vue中使用svg格式字体图标
- 读书印记 - 《心流:最优体验心理学》
- Vivado Block Design流程(MicroBlaze)
- 使用Excel中的插入对象功能在Excel中插入Word文档
热门文章
- 格式化大容量硬盘为fat32
- HDU4658 Integer Partition(整数拆分+判断相同数)
- 基于 Nginx XSendfile + SpringMVC 进行文件下载
- uva 10453 - Make Palindrome(dp)
- 项目经理常扮演的角色
- Android Stdio换源以及配置项目
- C语言 找数码是否存在
- 【面试题】Spring,SpringMVC,SpringBoot,SpringCloud有什么区别和联系?
- 笔记“SQL与Access”
- 顺序表循环队列:创建初始化、入队、出队、获取队列头数据、计算队列有效数据长度...