s.concat("def")
возвращает новый экземпляр String
. Экземпляр String
, на который ссылается s
, остается без изменений.
Вы можете добавить еще println
заявление, чтобы увидеть, что для себя:
public static void main(String[] args) {
String s = new String("abc");
System.out.println(s.concat("def"));
System.out.println(s);
}
Вы также можете видеть, что в Javadoc из concat
:
Если длина строки аргумента 0, то возвращается этот объект String. В противном случае возвращается объект String, который представляет последовательность символов, которая представляет собой конкатенацию последовательности символов, представленной этим объектом String, и последовательность символов, представленную строкой аргумента.
Оригинал String
возвращается только в том случае, если вы передаете пустой метод String
.
Некоторые, что ответили хорошо Похожий вопрос [здесь] (http://stackoverflow.com/questions/1552301/immutability-of-strings-in-java) –