Являются ли String Arrays изменчивыми?
Интересно, изменяются ли массивы String в Java? Я знаю, что Строки неизменяемы, но как насчет массивов строк?
Если у меня есть строковый массив и изменение содержимого, будет ли создан новый строковый объект? Или будет изменено фактическое значение?
Заранее спасибо
Ответы
Ответ 1
String
, содержащиеся в String[]
, действительно неизменяемы, но массив изменчив.
Это хорошо объяснено в этом ответе:
- Неизверженность означает, что объекты определенного типа не могут каким-либо образом изменить внешний наблюдатель
-
Integer
, String
и т.д. являются неизменяемыми. - Обычно все типы значений должны быть
- Объекты массива изменяются
- Это может быть массив ссылок на неизменяемые типы, но сам массив является изменяемым
- Значение вы можете установить эти ссылки на все, что хотите.
- Также верно для массива примитивов
- Неизменяемый массив не будет практичным.
- Ссылки на объекты могут быть разделены
- Если объект изменчив, мутация будет видна через все эти ссылки.
EDIT:
В некоторой степени связаны: Почему строки нельзя изменять в Java и .NET?
Ответ 2
Насколько я помню, поле в вашем массиве будет ссылаться на другую строку
String[] array {"I","like","rain"};
array[2] = "sun"
ваш массив можно изменить. сами струны.
Ответ 3
В массивах каждый элемент является просто указателем на объект. Итак, когда вы делаете что-то вроде
String one = "1";
String two = "2";
String three = "3";
String four = "4";
String[] myStringArray = {one, two, three};
myStringArray[2] = four;
Затем указатель, который был в третьем элементе массива, теперь указывает на четыре вместо три.