是不能改,除非新建对象
如String str = "dkdf";str的内容就是 "dkdf"
而 str = "test"; 事实上隐式的重新构造了一个对象对于StringBuffer是可以改变的
append()就实现追加,但不会重新构造
如String str = "dkdf";str的内容就是 "dkdf"
而 str = "test"; 事实上隐式的重新构造了一个对象对于StringBuffer是可以改变的
append()就实现追加,但不会重新构造
个人意见。
————————
我也刚学,不知道理解的对不对。
那句话中的values是指strings的引用
小弟不才,想问,如果"许多看似有改变的地方,都是重新生成的String,而原来的String根本没发生变化",这么说原来的值还在?!可以取出来吗?怎么取?
class Test//String 相当于基本数据类型
{
static void change(String s)
{
s.concat("world");
}
public static void main(String args[])
{
String s1="Hello";
String s2="World";
change(s1);
System.out.println("s1="+s1);
System.out.println("s2="+s2);
}
}
输出:
s1=Hello
s2=world
我认为string是分配一个固定的指针。它指向内存的某一具体地址。它的地址不发生改变,变的应该是那个地址内的内容。
其他的如int ,float等基本类别也是从栈上分配,不过和String 还是有区别的
个人意见,不知道对不对,望高手指教