书上说:
由于String类表示不变字符串,String类对字符串进行修改操作时,不能直接对原有字符串的内容进行修改,而是通过生成String类对象的一个拷贝进行的.
但是看下面的代码:
public class modifyStr
{
public static void main(String[] args)
{
String s1 = "abcd";
System.out.println("s1=" + s1); s1 = "dcbaaaaaa";
System.out.println("s1=" + s1);
}
}执行结果是:
s1=abcd
s1=dcbaaaaaa不是说String s1是表示不变字符串吗?怎么可以改变呀?
由于String类表示不变字符串,String类对字符串进行修改操作时,不能直接对原有字符串的内容进行修改,而是通过生成String类对象的一个拷贝进行的.
但是看下面的代码:
public class modifyStr
{
public static void main(String[] args)
{
String s1 = "abcd";
System.out.println("s1=" + s1); s1 = "dcbaaaaaa";
System.out.println("s1=" + s1);
}
}执行结果是:
s1=abcd
s1=dcbaaaaaa不是说String s1是表示不变字符串吗?怎么可以改变呀?
但s1引用已经不在指向原String了。
所以改变
但s1引用已经不在指向原String了。
所以改变
-----------------------------------------------------
那我还能找到原String s1吗?
你调用方法比如s1.subString(1,1)如果不重新引用结果还是以前的
如果原来的实例不再被引用 那么原来的实力将被内存回收了 内存的回收时不定时的 所以你摘不到原来的实例了 这就是java的内存回收机制