Java String一旦赋值就不能被改变,那为什么最后输出结果是world


class test
{
    public static void main(String[] args)
    {
        String str="hello";
        str="world";
        System.out.print(str);
    }
}
字符串是常量,一旦被赋值,就不能被改变,上述代码运行结果为world,这是为什么

str="world";是创建了一个新的字符串,内容是world,然后str这个引用指向新的字符串,原来的丢弃了。并没有修改

str指向“world”这个常量,不能修改的是“world”本身,不是str