如果创建了新实例,字符串是否会失去可变性

Ram*_*son 1 java string jvm

我知道字符串在本质上是不可改变的.但我有一个问题.

String a = new String("abc");
Run Code Online (Sandbox Code Playgroud)

如果我们创建一个像上面的字符串而不是文字,那么它不是不可变的,因为它是作为一个新对象创建的吗?请澄清.谢谢.

The*_*ind 6

不,它没有.无论如何创建,java String 始终不可变的.

实际上使用new 创建字符串是多余的,99%的情况应该避免(除非你做一些微板凳标记)

不可变意味着一旦创建实例就无法修改它.当你查看String的所有方法时,它们都没有实际修改传递给它的原始String.它们要么返回相同的String,要么创建一个新的String.

  • @Ramson - *Immutability*表示*instance*的值无法更改.*Immutability*定义在*instance*级别.仅仅因为字符串是普通对象并不意味着它们应该是可变的.*包装类是不可变的*.我没有得到你在这里想说的话.:) (2认同)