String类创建的疑惑

问题遇到的现象和发生背景

今天在学习JAVA的String类,就是String的对象的内容是放在private final char value[]数组里面的,有个地方不太明白,比如String str1 =new String( ”hello"),堆里面有个value数组,指向的是常量池里的"hello",而不是常量池里面有个value数组,堆里的数组存储着常量池里面hello的地址,那么这样的话,每次给str1赋予新的值都是在常量池里面创建一个新的字符串,value存储的的地址也会因此改变,是这么理解吗?那像String str2 = "world"这种方式呢?在栈里面的str2直接指向常量池里面的world吗?应该也要value数组存储吧。如果是的话,这个value在哪里呢?

问题相关代码,请勿粘贴截图
运行结果及报错内容
我的解答思路和尝试过的方法
我想要达到的结果

https://www.cnblogs.com/carsonwuu/p/9752949.html

img


这句话,在学string的时候,一开始都会告诉你 同一个字符串常量池里面只会有一个