String中的value为什么能指向常量池中的字符串常量

img

方法一的s,直接指向常量池中的hsp字符串实例化对象吧
方法二的s2,先在堆中创建一个String对象空间,但是为什么它的value字符数组,能直接指向一个字符串常量呢?

可参考:https://blog.csdn.net/weixin_42073629/article/details/116378067

img

我自己debug了一下

img


进入之后

img


所以,应该不是value[]指向一个字符串常量池中的实例化对象,而是value[]指向字符串常量池的那个实例化对象的value[]
不知道我说的对不对。。。


String s2 = new String("hsp")

会在堆上创建一个对象,如果常量池没有hsp会在常量池创建,但是堆中的地址不是常量池中对象的地址,感觉你这个图还是有地方欠妥

你好,请问你解决了吗?

为什么StringBuffer的value数组存放的字符串内容在堆中呢而String的字符串内容在常量池中