常量池与变量的关系

来源:1-2 JVM内存结构详解

慕粉0827588484

2022-06-24 18:15:00

静态常量池存储:字面量,包括文本字符串、final修饰的变量

运行时常量池存储:编译器期间的字面量

字符串常量池存储:字符串


如果一个类中有一个全局变量:

public static final String ERROR_CODE = "E-00001";


按照以上常量池,

1、会存静态常量池里,因为有final

2、会存运行时常量池里,编译期间就存进去了

3、会字符串常量池里,因为 String ERROR_CODE = "E-00001"


String ERROR_CODE = "E-00001"

所以我想问的是上面这个变量中的ERROR_CODE用的是那个的引用。

如果用了其中一个的引用,其他的引用又是什么时候用呢?



写回答

1回答

qq_慕莱坞4316410

2023-04-02

说说我的一些不是很专业的见解,一起学习,静态常量池在没被加载到JVM的时候,就会存在这个位置,当JVM加载装载之后,根据情况分配,String字符串是存储在字符串常量池里面,而比如static final Integer = 21 这个就是存在运行时静态常量池中,Java因为String的特殊性,所以JVM是单独划分一个区存储静态的字符串

0

Java架构师-技术专家

千万级电商项目从0到100全过程,覆盖Java程序员不同成长阶段的核心问题与解决方案

2672 学习 · 5839 问题

查看课程