当前位置: 技术问答>java相关
关于String类immutable的不理解
来源: 互联网 发布时间:2015-10-30
本文导语: String c=new String("myString"); System.out.println(c); c="my String has been changed"; System.out.println(c); 既然 c 可改 为什么还要强调string immutable呢 string immutable 跟我有什么关系呢,既然毫无关系,强调这一点,岂不是。。了 ...
String c=new String("myString");
System.out.println(c);
c="my String has been changed";
System.out.println(c);
既然 c 可改
为什么还要强调string immutable呢
string immutable 跟我有什么关系呢,既然毫无关系,强调这一点,岂不是。。了
System.out.println(c);
c="my String has been changed";
System.out.println(c);
既然 c 可改
为什么还要强调string immutable呢
string immutable 跟我有什么关系呢,既然毫无关系,强调这一点,岂不是。。了
|
class a{
...
public void changeit(String wanttobechanged) {
wanttobechanged = "new value"; //not right
}
public void change(StringBuffer itok) {
itok.append ("ok !"); // itok's content changed
}
...
}
...
public void changeit(String wanttobechanged) {
wanttobechanged = "new value"; //not right
}
public void change(StringBuffer itok) {
itok.append ("ok !"); // itok's content changed
}
...
}
|
c="my String has been changed";
是指..生成一个新的String对象,c指向新的String对象...
是指..生成一个新的String对象,c指向新的String对象...
|
immutable 的不是 c,而是内存中的"myString"和"my string has been changed."。
c 原本指向myString,后来经过c="my String has been changed";之后,c原本指向的地址上的内容还是“myString”,但是c现在指向了另一个地址,那个地址里的内容是“my string has been changed.”
c 原本指向myString,后来经过c="my String has been changed";之后,c原本指向的地址上的内容还是“myString”,但是c现在指向了另一个地址,那个地址里的内容是“my string has been changed.”