常量池与变量的关系
来源: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是单独划分一个区存储静态的字符串
相似问题