求解字符串池与常量池的区别
这两者有什么区别,字符串池是否属于常量池中划分的一个子块?百度过了,但是没有说两者之间的关系,我也查阅过很多资料书,都没有细说。
我一开始的想法是:在堆中划分出一块特殊区域作为常量池,然后在常量池中再划分出一块作为字符串池,这样解释对不对? --------------------编程问答-------------------- 常量池在堆中,用于存放实际的对象以及常量,当然字符串常量也在其中。 --------------------编程问答-------------------- 可以理解为内存里面专门为string类型变量开辟的一片区域
譬如String a = "abc"; 当你定义这样一个变量的时候,java此时先会去常量池寻找有没有"abc"这样的字符串,如果有,直接把内存地址交给a, 否则就生成一个"abc"的字符串
当下一个String b = "abc";的时候,发现常量池已经有"abc"了,此时JVM不会再次生成"abc",而是直接交给"abc"引用给b, 所以此时你会发现a == b --------------------编程问答-------------------- 字符串是一个特殊包装类,其引用是存放在栈里的,而对象内容必须根据创建方式不同定(常量池和堆).有的是编译期就已经创建好,存放在字符串常 量池中,而有的是运行时才被创建.使用new关键字,存放在堆中。
补充:Java , Java相关