Java class文件格式之常量池作者:zhangjg   这篇文章主要为大家详细介绍了Java class文件格式之常量池的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 常量池中各数据项类型详常量池中的数据项是通过索引来引用的, 常量池中的各个数据项之间也会相互引用。在这11中常量池数据项类型中, 有两种比较基础, 之所以说它们基础, 是因为这两种类            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-07-12 10:29:12
                            
                                57阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            1.简介特指运行时的常量池,存放在内存的方法区的中。一个JVM只有唯一的一个常量池,各线程共享该常量池;保存了在编译期间就已经确定的数据。包括final常量值(局部常量、成员常量以及引用常量)和对象字面值;在编译期间,每当给常量赋值时,它就会去检测常量池中是否存在该值。若存在,直接返回该值的地址给常量;若不存在该值,则会在常量池中创建该值,并把该值的地址返回给常量;注意:常量池中不会存在相等的值。            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-08-18 14:55:10
                            
                                75阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            # Java解析class常量池
在Java编译过程中,编译器会将源代码编译为字节码文件(.class文件),其中包含了类的常量池。常量池是Java虚拟机在执行类加载时用于存储各种常量的一块内存区域,它是Class文件结构中的一个重要部分。本文将介绍Java解析class常量池的原理和实现方式,并通过代码示例来说明。
## 一、常量池的结构
Java的常量池是由多个常量项(Constant)            
                
                    
                        
                                                            
                                                                        
                                                                                        原创
                                                                                    
                            2023-12-26 04:41:11
                            
                                40阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            文章目录Preclass常量池字面量符号引用符号引用PreJVM - 深入剖析字符串常量池JVM - 基本类型的包装类和对象池class常量池Class常量池我们可以理解为是Class文件中的资源仓库。Class文件中主要由两大部分 类的版本、字段、方法、接口等描述信息外,常量池(constant pool table),用于存放编译期生成的各种字面量(Literal)和符号引用(Symbolic References)。我们来看下我们天天打交道的class文件十六进制的样子  大            
                
                    
                        
                                                            
                                                                        
                                                                                        原创
                                                                                    
                            2021-05-31 16:04:43
                            
                                1176阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            文章目录Preclass常量池字面量符号引用符号引用PreJVM - 深入剖析字符串常量池JVM            
                
                    
                        
                                                            
                                                                        
                                                                                        原创
                                                                                    
                            2022-03-28 13:37:00
                            
                                234阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            java字符串常量池保存在哪里?如何证明?    有一次被问到java字符串常量池保存在哪里?如何证明?其实这个问题我想不会难倒大多数人,但是问题如何证明呢?我当时也一脸懵逼,因为确实不知道怎么证明,了解到的也只是从一些博客或贴子中得来,也不知是否正确。以下是经过一番学习整理后的一些个人结论。    首先看看Oracl            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-09-11 06:30:29
                            
                                36阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            概述  常量池是紧接着主次版本号之后出现的,常量池可以理解为class文件之中的资源仓库,它是Class文件结构中与其他项目管理            
                
                    
                        
                                                            
                                                                        
                                                                                        原创
                                                                                    
                            2022-07-01 09:47:27
                            
                                116阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            简介:这几天在看Java虚拟机方面的知识时,看到了有几种不同常量池的说法,然后我就去CSDN、博客园等上找资料,里面说的内容真是百花齐放,各自争艳,因此,我好好整理了一下,将我自认为对的理解写下来与大家共同探讨:在Java的内存分配中,总共3种常量池:
1.字符串常量池(String Constant Pool):1.1:字符串常量池在Java内存区域的哪个位置?
在JDK6.0及之前版本,字符            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2019-07-26 11:43:00
                            
                                222阅读
                            
                                                                                    
                                2评论
                            
                                                 
                 
                
                             
         
            
            
            
            常量池 主要包括下面2类: 1. 字面量(Literal):如int,double,String等; 2. 符号引用(Symbolic Reference); 符号引用 1. 类和接口 的全限定名; 2. 字段 的名称和描述符; 3. 方法 的名称和描述符; 当虚拟机运行时,需要从 常量池 中获取对            
                
                    
                        
                                                            
                                                                        
                                                                                        原创
                                                                                    
                            2022-05-04 22:58:43
                            
                                317阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            好好说说Java中的常量池之Class常量池在Java中,常量池的概念想必很多人都听说过。这也是面试中比较常考的题目之一。在Java有关的面试题中,一般习惯通过String的有关问题来考察面试者对于常量池的知识的理解,几道简单的String面试题难倒了无数的开发者。所以说,常量池是Java体系中一个非常重要的概念。谈到常量池,在Java体系中,共用三种常量池。分别是字符串常量池、Class常量池和            
                
                    
                        
                                                            
                                                                        
                                                                                        原创
                                                                                    
                            2020-10-27 20:02:23
                            
                                487阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            
                    
                
                            
                
                    
                        
                                                            
                                                                        
                                                                                        原创
                                                                                    
                            2022-04-20 14:53:33
                            
                                80阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            Java的常量池有字符串常量池、Class常量池和运行时常量池等,一想到这么多的常量池头都大了,今天就来梳理一下这些常量池的区别。一、运行时常量池运行时常量池是方法区的一部分,即JDK1.8中的元空间。JVM将类加载到内存中后,会将Class常量池中的内容存放到运行时常量池中。二、Class文件常量池Clas文件中除了有类的版本、字段等描述信息外,还有常量池表(Constant Pool Tabl            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-09-21 19:48:44
                            
                                33阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            java中变量和常量的区别发布时间:2020-05-15 18:21:43:亿速云阅读:158作者:Leahjava中变量和常量有什么区别?相信大部分人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,话不多说,一起往下看吧。1、在java编码规范中,常量名规定要大写,变量名规定要小写;2、常量只能赋值一次,变量可以赋值多次;3、常量在程序运行过程中不能改变,变量可以改变。我们来看看常            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-07-17 16:09:33
                            
                                68阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            # Java Class常量池的作用
## 一、流程概述
下面是实现"Java Class常量池有什么用"的步骤概述:
| 步骤 | 描述 |
| --- | --- |
| 1 | 创建一个Java Class文件 |
| 2 | 定义常量池 |
| 3 | 在常量池中添加常量 |
| 4 | 使用常量 |
| 5 | 编译和运行代码 |
接下来,我将逐步指导你完成每个步骤。
## 二、            
                
                    
                        
                                                            
                                                                        
                                                                                        原创
                                                                                    
                            2023-08-07 15:40:34
                            
                                45阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            class常量池和运行时常量池的区别 class常量池 一个java源文件的类,接口,编译后会产生一个字节码文件。而Java中的字节码需要数据支持,通常这种数据会很大以至于不能直接存到字节码里,换一种方式,可以存到常量池中,这个字节码包含了指向常量池的引用。在动态链接的时候会用到运行时常量池。可以包            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2021-01-18 17:43:00
                            
                                279阅读
                            
                                                                                    
                                2评论
                            
                                                 
                 
                
                             
         
            
            
            
            常量池解析Java字节码常量池的内存分配链路oop-klass模型常量池的解析原理在字节码文件中,常量池的字节码流所在的块区紧跟在魔数和版本号之后,因此JVM在解析完魔数与版本号后就开始解析常量池。JVM解析Java类字节码文件的接口:ClassFileParser::parseClassFile(),总体步骤如下:解析魔数–>解析版本号–>解析常量池–>解析父类–>解析接            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2024-08-23 10:21:13
                            
                                39阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            一、常量池的作用在class文件中的魔数、副版本号、主版本之后,紧接着就是常量池的数据区域了,如下图用红线包括的位置:常量池可以比喻为Class文件里的资源仓库,它是Class 文件结构中与其他项目关联最多的数据,通常也是占用Class文件空间最大的数据项目之一,另外,它还是在Class文件中第一个出现的表类型数据项目。二、常量池的结构常量池的结构比较简单,前面的两个字节叫做常...            
                
                    
                        
                                                            
                                                                        
                                                                                        原创
                                                                                    
                            2022-08-29 15:01:09
                            
                                284阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            string是java中的字符串。String类是不可变的,对String类的任何改变,都是返回一个新的String类对象。下面介绍java中的String与常量池。 1. 首先String不属于8种基本数据类型,String是一个对象。 因为对象的默认值是null,所以String的默认值也是nu            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2017-03-14 16:30:00
                            
                                104阅读
                            
                                                                                    
                                2评论
                            
                                                 
                 
                
                             
         
            
            
            
            1、常量字面量包括:1.文本字符串 2.八种基本类型的值 3.被声明为final的常量等;符号引用包括:1.类和方法的全限定名 2.字段的名称和描述符 3.方法的名称和描述符。2、常量池分类类文件常量池:又称为静态常量池,存储区域在堆中,编译时产生对应的class文件,主要包含字面量和符号引用;运行时常量池:存在元数据(Meta Space)空间,JVM运行时,在类加载完成后,将每个class常量            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-07-17 12:09:29
                            
                                92阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            申明一点:String Pool是对应于在Constant Pool中存储String常量的区域.习惯称为String Pool,也有人称为String Constant Pool.   1. 首先String不属于8种基本数据类型,String是一个对象。     因为对象的默认值是null,所以String的默认值也是null;但它又            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-11-15 10:38:00
                            
                                49阅读