Почему метод concat() Java ничего не делает?
Этот код:
String s = "TEST";
String s2 = s.trim();
s.concat("ING");
System.out.println("S = "+s);
System.out.println("S2 = "+s2);
приводит к этому результату:
S = TEST
S2 = TEST
BUILD SUCCESSFUL (total time: 0 seconds)
Почему "TEST" и "ING" не объединяются вместе?
Ответы
Ответ 1
a Строка immutable, то есть вы не можете изменить String в Java. concat() возвращает новую, конкатенированную строку.
String s = "TEST";
String s2 = s.trim();
String s3 = s.concat("ING");
System.out.println("S = "+s);
System.out.println("S2 = "+s2);
System.out.println("S3 = "+s3);
Ответ 2
Поскольку String
является неизменным - класс String
не содержит методов, которые изменяют содержимое самого объекта String
. Метод concat()
возвращает новый String
, содержащий результат операции. Вместо этого:
s.concat("ING");
Попробуйте следующее:
s = s.concat("ING");
Ответ 3
Я думаю, что вы хотите сделать:
s2 = s.concat("ING");
Функция concat не изменяет строку s, она просто возвращает s с добавленным аргументом.
Ответ 4
concat возвращает строку, поэтому вы в основном вызываете concat, не сохраняя то, что он возвращает.
Попробуйте следующее:
String s = "Hello";
String str = s.concat(" World");
System.out.println(s);
System.out.println(str);
Должен печатать:
Привет
Hello World
Ответ 5
.concat()
возвращает новое конкатенированное значение.
там вы сделали s.concat("ING")
→ , это дает возвращаемое значение "Тестирование". Но вы должны получить его в объявленной переменной.
Если вы сделали s=s.concat("ING");
, тогда значение "s" изменится на "TESTING"
Ответ 6
Поскольку String неизменна, когда concat() вызывается на любом String obj как
String s = "abc";
новый String obj создается в String pool ref s
s = s.concat( "def" );
здесь создается еще один String obj с val abcdef и ссылается на s