2016-10-04 3 views
2

Я написал следующий код:Когда строка неизменна, как получилось System.out.println (s.concat («некоторая строка»)); возвращает измененное значение

public static void main(String[] args) { 
    // TODO Auto-generated method stub 
    String s = new String("abc"); 
    System.out.println(s.concat("def")); 
} 

она возвращается мне выход: «ABCDEF»

, как это возможно, если строка неизменна.

+0

Некоторые, что ответили хорошо Похожий вопрос [здесь] (http://stackoverflow.com/questions/1552301/immutability-of-strings-in-java) –

ответ

6

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.

+0

Проверено реализация метода Concat. Он возвращает новую строку. Благодаря :) – Savi

2

возвращает новую новую строку не измененная Струнный

попробовать

public static void main(String[] args) { 
    String s = new String("abc"); 
    System.out.println(s.concat("def")); 
    System.out.println(s); 
} 
1

С Oracle Java Docs,

public String concat(String str) 
Concatenates the specified string to the end of this string. 

Если длина строки аргумента 0, то это Объект String - . В противном случае создается новый объект String, представляющий последовательность символов , которая представляет собой конкатенацию последовательности символов , представленной этим объектом String, и последовательность символов , представленную строкой аргумента.

Examples: 

"cares".concat("s") returns "caress" 
"to".concat("get").concat("her") returns "together" 

Параметры: Str - строка, которая сцепляется к концу этого строки.

Возвращает: строка, представляющая конкатенацию символов этого объекта , за которыми следуют символы строкового аргумента.

 Смежные вопросы

  • Нет связанных вопросов^_^