2014-02-05 2 views
1

여기에서 자바를 수정하고 있습니다 : 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() line'에는 트릭이 있음을 알 수 있습니다. 그 줄의 유일한 것은's.trim();'이므로, 나는 그것이 무엇을하는지 보게 될 것이다. javadoc은 다음과 같습니다. http://docs.oracle.com/javase/7/docs/api/java/lang/String.html#trim() 첫 번째 행은 '문자열의 사본을 선행 및 trailing white spaces omitted.' 여기서 반환 값은 무시되므로 답변을 찾았습니다. –

답변

9

불변 인 String를 수정하지 않습니다 trim() 방법을. 그것은 변경 s를 떠나, 신속하게 무시 트리밍 String을 반환합니다. 교체

0123와

s.trim(); 

+0

아 맞습니다. 나는 그것을 지금 본다. 그들은 의도적으로 과제를 빠뜨렸다! –

관련 문제