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