java面经:编译时常量与非编译时常量,class常量池,运行时常量池,字符串常量池

编译期常量指的就是程序在编译时就能确定这个常量的具体值
非编译期常量就是程序在运行时才能确定常量的值,因此也称为运行时常量

//编译期常量
final int i = 4;
final String str = "dasd";
// 非编译期常量
final String str1 = new String("dasd");

使用一个类的编译时常量,并不会导致该类进行类加载
都存放在运行时常量池
字符串常量池时运行时常量池的一部分。
运行时常量池和字符串常量池被移动到了堆中。但是不论它们物理上如何存放,逻辑上还是属于方法区的。

class常量池是编译期间的概念,在运行后期中的值跑去运行时常量池。

posted @ 2022-07-21 22:27  无极是一种信仰  阅读(103)  评论(0)    收藏  举报