Страницы

Поиск по вопросам

среда, 12 декабря 2018 г.

Почему объект String не передаётся по ссылке

Доброго времени суток. В консоль данный код выводит: "slipstream slip stream", а не "slipstream slipstream stream" как я предполагал. Помогите разобраться, почему s1 после fix(String s1) не изменила значения на "slipstream". Спасибо. ссылка
class PassS { public static void main(String [] args) { PassS p = new PassS(); p.start(); }
void start() { String s1 = "slip"; String s2 = fix(s1); System.out.println(s1 + " " + s2); }
String fix(String s1) { s1 = s1 + "stream"; System.out.print(s1 + " "); return "stream"; } }


Ответ

Читаем доки.
Strings are constant; their values cannot be changed after they are created.
Строки иммутабельны; их значение нельзя поменять после создания.
s1 = s1 + "stream" в методе fix меняет лишь локальную переменную на стеке. Оригинальная строка, определённая в методе start, не меняется.

Комментариев нет:

Отправить комментарий