Доброго времени суток.
В консоль данный код выводит: "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, не меняется.
Комментариев нет:
Отправить комментарий