Concat()方法不会修改原始值.它返回一个新值.
像这样:
String str = "good";
str.concat("ness");
System.out.println(str); //"good"
Run Code Online (Sandbox Code Playgroud)
但有些方法会修改原始值.为什么?
在Groovy中:
def languages = ["Java", "Groovy", "JRuby"]
languages.reverse()
===> [JRuby, Groovy, Java]
println languages
===> [Java, Groovy, JRuby]
languages.sort()
===> [Groovy, JRuby, Java]
println languages
===> [Groovy, JRuby, Java]
Run Code Online (Sandbox Code Playgroud)
coo*_*ird 11
String在Java中是不可变的.任何"修改"a的方法都String必须返回一个新的实例String.
字符串是不变的; 它们的值在创建后无法更改.
Java语言规范在第4.3.3节:类字符串中定义了这种行为.
对编辑的回应:
似乎在Groovy中添加了一个示例.(我之前没有使用过Groovy,所以我对它的理解可能不正确.)
根据我从查看示例的理解,似乎有一个languages列表正在被reverse-ed和sort-ed - 这些操作本身不会修改String列表中包含的对象,而是对列表本身起作用.
列表的方式返回一个新列表,或者它如何修改或不修改列表与String对象本身的行为无关.
| 归档时间: |
|
| 查看次数: |
1714 次 |
| 最近记录: |