2014-02-05 33 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()不會修改字符串。在問題文本中,你被告知'字符串對象是不可變的,並且s.trim()行中有一個技巧。由於該行唯一的內容是's.trim();',我會查看它的功能。這裏是javadoc:http://docs.oracle.com/javase/7/docs/api/java/lang/String.html#trim()第一行告訴你'返回字符串的一個副本,省略後面的空格.'因爲返回值在這裏被忽略,所以你找到了你的答案。 –

回答

9

trim()不修改String,這是不可改變的方法,它返回修剪String,這是及時忽略,留下s不變。更換

s.trim(); 

s = s.trim(); 
+0

啊是的。我現在看到它。他們故意錯過了作業! –