Javac常量池的解读
interface IA{
public void md();
}
public class Test07 implements IA{
final double d = 2.0d;
final float f = 2.0f;
final int i = 10000;
final byte b = 10;
String s = "mazhi";
public void md(){
IA ia = new Test07();
ia.md();
}
}
最后经过Gen处理后变为:
interface IA{
public void md();
}
public class Test07 implements IA{
final double d ;
final float f;
final int i;
final byte b;
String s;
public <init>() {
super();
d = 2.0;
f = 2.0F;
i = 10000;
b = 10;
s = "mazhi";
}
public void md(){
IA ia = new Test07();
ia.md();
}
}
常量池中可能存储的符号有:
|
类型 |
标志 |
描述 |
|
CONSTANT_utf8_info |
1 |
UTF-8编码的字符串 |
|
CONSTANT_Integer_info |
3 |
整型字面量 |
|
CONSTANT_Float_info |
4 |
浮点型字面量 |
|
CONSTANT_Long_info |
5 |
长整型字面量 |
|
CONSTANT_Double_info |
6 |
双精度浮点型字面量 |
|
CONSTANT_Class_info |
7 |
类或接口的符号引用 |
|
CONSTANT_String_info |
8 |
字符串类型字面量 |
|
CONSTANT_Fieldref_info |
9 |
字段的符号引用 |
|
CONSTANT_Methodref_info |
10 |
类中方法的符号引用 |
|
CONSTANT_InterfaceMethodref_info |
11 |
接口中方法的符号引用 |
|
CONSTANT_NameAndType_info |
12 |
字段或方法的符号引用 |
|
CONSTANT_MethodType_info |
15 |
标志方法类型 |
|
CONSTANT_MethodHandle_info |
16 |
表示方法句柄 |
|
CONSTANT_InvokeDynamic_info |
18 |
表示一个动态方法调用点 |
Javac常量池的解读的更多相关文章
- jvm源码解读--05 常量池 常量项的解析JVM_CONSTANT_Utf8
当index=18的时候JVM_CONSTANT_Utf8 case JVM_CONSTANT_Utf8 : { cfs->guarantee_more(2, CHECK); // utf8_l ...
- jvm源码解读--04 常量池 常量项的解析CONSTANT_Class_info
接上篇的继续 ConstantPool* constant_pool = ConstantPool::allocate(_loader_data, length, CHECK_(nullHandle) ...
- jvm源码解读--03 常量池的解析ConstantPool
先看bt栈 (gdb) bt #0 ConstantPool::allocate (loader_data=0x7fe21802e868, length=87, __the_thread__=0x7f ...
- [一]class 文件浅析 .class文件格式详解 字段方法属性常量池字段 class文件属性表 数据类型 数据结构
前言概述 本文旨在讲解class文件的整体结构信息,阅读本文后应该可以完整的了解class文件的格式以及各个部分的逻辑组成含义 class文件包含了java虚拟机指令集 和 符号表 以及若 ...
- Java堆、栈和常量池以及相关String的详细讲解(经典中的经典) (转)
原文链接 : http://www.cnblogs.com/xiohao/p/4296088.html 一:在JAVA中,有六个不同的地方可以存储数据: 1. 寄存器(register). 这是最快的 ...
- Java堆、栈和常量池
摘录自 http://www.cnblogs.com/xiohao/p/4296088.html 1. 栈(stack)与堆(heap)都是Java用来在RAM中存放数据的地方.与C++不同,Java ...
- Java堆、栈和常量池以及相关String的详细讲解
一:在JAVA中,有六个不同的地方可以存储数据: 1. 寄存器(register). 这是最快的存储区,因为它位于不同于其他存储区的地方——处理器内部.但是寄存器的数量极其有限,所以寄存器由编译器根据 ...
- JVM-class文件完全解析-常量池
在.java文件,讲过javac编译后产生的 .class文件中,头4个字节表示的是魔数,接着魔数后面的第5,6个字节存储的是次版本号,第7,8个字节存储的主板本号.那么再接下来的就是表示常量池入口了 ...
- 【JVM虚拟机】(5)---深入理解JVM-Class中常量池
深入理解Class---常量池 一.概念 1.jvm生命周期 启动:当启动一个java程序时,一个jvm实例就诞生了,任何一个拥有main方法的class都可以作为jvm实例运行的起点. 运行:mai ...
随机推荐
- 关于写css文件需要注意的事项
通常在项目中,我们尽量不要把style样式写在html中,而是使用外部.css文件的形式添加样式.在编写.css文件时,一定一定一定要注意,不要在一个css语句中写同级class名字,否则会出错,找不 ...
- 协程之gevent
迭代器: 一个实现了__iter__方法和__next__方法的对象,就是迭代器. 生成器: 生成器是一类特殊的迭代器 简单来说:只要在def中有yield关键字的 就称为 生 ...
- STM32F10X-定时器/计数器
1.STM32F10X的计数器与定时器关系 当时钟连接外脉冲时是计数器:当时钟采用系统内部时钟时是定时器! 2.STM32F10X定时器的时钟源 STM32F10X定时器的时钟不是直接来至于APB1和 ...
- 实用shell命令100条
1,echo "aa" > test.txt 和 echo "bb" >> test.txt //>将原文件清空,并且内容写入到文件中, ...
- codeblocks+SDCC开发51单片机
说到51,大部分人都是用的是KEIL开发环境,但是KEIL是商业软件,我们一般人都用的是破解版的,如果用于商业就会收到法律诉讼.然而有一款很好的编译器专为51内核而存在.SDCC最大的有点就是开源免费 ...
- Mac 下netstat和linux下不一样
Linux's netstat command options and OS X(/BSD)'s have almost nothing to do with each other. Of the o ...
- python迭代器实例
1. 迭代器 迭代器是访问集合元素的一种方式.迭代器对象从集合的第一个元素开始访问,知道所有的元素被访问完结束.迭代器只能往前不会后退,不过这也没什么,因为人们很少在迭代途中往后退. 1.1 使用迭代 ...
- IOS绘图详解
http://blog.163.com/wkyuyang_001/blog/static/10802122820133190545227/
- Tarjan求缩点化强连通图
Describe: 求一个有向图加多少条边可以变成一个强连通图 Solution: Tarjan缩点染色后,判断出度和入度,所有点的出度 = 0 的和 和 入度 = 0 的和的最大值即为所求. 缩点染 ...
- Legal or Not HDU
Legal or Not Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Tot ...