s2存的是常量池地址还是外面的那个地址

img


如图所试,1234567890,1234567b,行cvhjj,153

由于使用了new关键字,s2指向的是一个堆内存中的新对象,而不是常量池中的字符串常量。
如果添加String s3 = "a" + "b" + "c"; s3的值是通过几个字符串常量连接而成的,因此它们在编译时被优化为一个字符串常量"abc"。因为字符串常量在Java中是不可变的,所以它们可以被共享和重用。因此,s3和s1指向的是同一个字符串常量对象,s1==s3。

s2指向堆中 只是堆中和常量池都有一个"abc" 所属区域不同

不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^