字符串数组是否可变?
我想知道Java中的String数组是否可变? 我知道字符串是不可变的,但字符串数组怎么样?
如果我有一个字符串数组,并更改内容,是否会创建一个新的字符串对象? 或者实际值是否会改变?
提前致谢
String[]
中包含的String[]
确实是不可变的,但是数组是可变的。
这个答案很好地解释了这一点 :
- 不可变性意味着某种类型的物体不能以任何有意义的方式改变为外部观察者
Integer
,String
等是不可变的- 通常所有值类型都应该是
- 数组对象是可变的
- 它可能是对不可变类型的引用数组,但数组本身是可变的
- 意思是您可以将这些引用设置为您想要的任何内容
- 对于基元数组也是如此
- 不可变数组将不实用
- 可以共享对象的引用
- 如果对象是可变的,那么将通过所有这些引用看到变异
编辑:
有点相关: 为什么字符串在Java和.NET中不可变?
据我所知,你的数组中的字段将引用另一个字符串
String[] array {"I","like","rain"}; array[2] = "sun"
你的arrays可以改变。 字符串本身不是。
在Arrays中,每个元素只是一个指向对象的指针。 所以,当你做类似的事情时
String one = "1"; String two = "2"; String three = "3"; String four = "4"; String[] myStringArray = {one, two, three}; myStringArray[2] = four;
然后,位于数组第3个元素的指针现在指向四个而不是三个 。