2014-02-05 5 views
1

Я пересматриваю Java здесь: http://java-success.blogspot.com.au/2012/06/core-java-coding-questions-frequently.html и пришел по этому вопросу:.?.Почему trim() не удаляет конечные пробелы в этом примере?

«Q1 Каких будет выходом из следующего фрагмента кода

String s = " Hello "; 
s += " World "; 
s.trim(); 
System.out.println(s); 

A1 Выход будет

" Hello World " 

с ведущими и завершающие пробелы. Некоторые ожидали бы обрезанный «Hello World».

Итак, что понятия делает этот вопрос пытается проверить?

Строковые объекты неизменяемы, и есть трюк в строке s.trim(). ссылки Понимание объекта и недостижимые объекты, которые имеют право для сбора мусора.»

Может кто-то объяснить, почему замыкающие пробелы не удаляются?

+0

Просто, чтобы помочь вам в будущем, вот как бы я работал, чтобы ответить на вопрос, не знал ли я, что s.trim() не изменяет строку. В тексте вопроса вам сообщается, что объекты String неизменяемы, и в s.trim() строке есть трюк. Поскольку единственная вещь в этой строке - 's.trim();', я бы посмотрел, что это делает. Вот javadoc: http://docs.oracle.com/javase/7/docs/api/java/lang/String.html#trim() В первой строке там говорится: «Возвращает копию строки с ведущими и trailing whitespace omitted. 'Поскольку здесь возвращаемое значение игнорируется, вы нашли свой ответ. –

ответ

9

Метод trim() не изменяет String, который неизменен. Она возвращает обрезанную String, который быстро проигнорировано, оставляя s без изменений. Заменить

s.trim(); 

с

s = s.trim(); 
+0

Ах да. Я вижу это сейчас. Они умышленно упустили задание! –

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