String赋值问题

来源:百度知道 编辑:UC知道 时间:2024/06/08 08:35:49
public class Test1{
static String s = "a";
public static void main(String[] args) {
s = "b";
System.out.println("s =" + s);
}
}
String不是不可变的引用类型么?为什么还能从a改为b呢?谢谢!
StringBuffer是可变的引用类型,那如何表示出它可以改变,即它与String的不同之处呢?谢谢!

string 不可变是说一个string对象一旦
创建,那么将不可在被修改,每次对string
的修改都是在重新创建一个新的存储空间
然后将但前的string对象的引用指向这个新的
存储空间,以此来实现对一个string的修改

你想干嘛?
打印出 ab?
public class Test1{
static String s = "a";
public static void main(String[] args) {
t = "b";
System.out.println("s =" + t);
}
}

一楼说的是对的
string如果你不用new,只创建对象,是不会分配内存空间的

string str="aa";
str="bb";
实际上是创建了3个对象,str,"aa","bb"
"aa","bb"应该在常量内存区
str完成的只是引用而已