字符串数组是否可变?

mrj*_*min 7 java arrays string types mutable

我想知道Java中的String数组是否可变?我知道字符串是不可变的,但字符串数组怎么样?

如果我有一个字符串数组,并更改内容,是否会创建一个新的字符串对象?或者实际值是否会改变?

提前致谢

Lui*_*oza 16

String包含在其中的s String[]确实是不可变的,但是数组是可变的.

这个答案很好地解释了这一点:

  • 不变性意味着某种类型的物体不能以任何有意义的方式改变为外部观察者
    • Integer,String等是不可变的
    • 通常所有的值类型都应该是
  • 数组对象是可变的
    • 它可能是对不可变类型的引用数组,但数组本身是可变的
      • 意思是您可以将这些引用设置为您想要的任何内容
      • 对于基元数组也是如此
    • 不可变数组将不实用
  • 可以共享对象的引用
    • 如果对象是可变的,那么将通过所有这些引用看到变异

编辑:

有点相关:为什么字符串在Java和.NET中不可变?


Mar*_*erg 5

据我记得数组中的字段将引用另一个字符串

String[] array {"I","like","rain"};
array[2] = "sun"
Run Code Online (Sandbox Code Playgroud)

您的数组可以更改。字符串本身不是。