2016-02-10 26 views
-3

我已經使用了下面的字符串操作,但無法理解爲什麼第一種情況不起作用。String replaceAll不能使用字符串對象

案例 - 1:

String myString = new String("old String"); 
System.out.println(myString); 
myString.replaceAll("old", "new"); 
System.out.println(myString); 

//Output 
old String 
old String 

案例 - 2:

String myString = new String("old String"); 
System.out.println(myString); 
myString = new String("new String"); 
System.out.println(myString); 

//Output 
old String 
new String 

爲什麼情況 - 1是工作,但案件 - 2不工作?

+0

String.replaceAll()返回String的新實例和更改。原始字符串不會更改,因爲字符串是不可變的。 – NickJ

回答

3

String.replaceAll()返回指定替換的新字符串。你需要這樣做:

myString = myString.replaceAll("old", "new"); 
+0

因爲這個問題已經被回答了很多次,所以只爲了獲得簡單的聲望而回答這個問題並不是很酷。特別是答案並不是那麼好:例如缺少指向文檔的鏈接。 – Tunaki

0

replaceAll方法返回一個String對象。您必須將其分配回myString或另一個變量,因爲字符串是不可變的。