<求助>一个关于String对象的问题
String s = new String("s");
String s1 = s;
这样做就是把s的引用赋值给了s1吧,应该修改s1,s也会变,但是我实验一下没有s改变,求解释一下,谢谢!
------解决方案--------------------我不知道你是咋修改的
java中的String的值是不能修改的 如果要修改的话用StringBuffer或StringBuilder 推荐使用StringBuilder
假如:String S="123";
s = "456";
这其实是两个对象
"123"会一直放在String缓冲区中,如果以后没用到的话 ,他就会成为垃圾,不会被回收的 ;
------解决方案--------------------String s = "s";
String s1 = s;
System.out.println(s==s1);
s1+="abc";
System.out.println(s==s1);
System.out.println(s);
结果:
true
false
s
s1 = s; s的引用赋值给了s1,那么 s、s1指向了同一个字符串对象。所以第一个打印出了true
s1+="abc"; 这里修改了s1的值,按理说s、s1指向了同一个对象,打印s的值应该是也是sabc才对。可是在java中使用+串联字符串会产生一个新的字符串对象,所以此时内存中有两个字符串对象,一个 "s" ,一个 "sabc"。此时s1指向的正是第二个对象,s则仍然指向那个"s"字符串对象。
------解决方案--------------------