有关java的String类型

请问一下,对于String变量,如果先new了一个对象,比如String str = new String("abc")
此时再让str = "abcd"其中会有什么变化呀

是str直接指向常量池的abcd,原对象的引用没有了,还是说是堆里面的对象中的属性value指向了常量池的abcd,但是value是被final修饰的,它的指向为什么会发生变化呢

感谢感谢

是你说的第一种情况。str直接指向常量池的abce,原对象的引用没有了。

覆盖了,你输出是什么样子的,你可以debug