我不确定运行时常量池的某些属性。
运行时常量池,由常量池中的数据填充(来自 .class 文件,在类加载期间)。但它是否也被运行时创建的变量填充?还是在编译期间将它们转换为文字,并存储在常量池中?
例如:
Integer i = new Integer(127);
被视为文字,因为转换为:
Integer i = Integer.valueOf(127);
在编译期间,并存储在常量池中?
如果它不是那样工作,是否有运行时常量池的运行时机制?
第二个问题:我在很多文章中找到了这句话:“每个类都有Runtime constant pool”,但它是什么意思?是否有一个 RCP,包含(例如)整数类型的所有应用程序对象,或者每个类都有一个 RCP,包含该类中出现的所有常量对象?(例如:Person,得到年龄 = Integer(18),并且 isAdult = Boolean(true))。