public class Aa {
public static void main(String[] args) {
StringBuffer s = new StringBuffer("good");
StringBuffer s2 = new StringBuffer("bad");
test(s, s2);
System.out.println(s);// 9
System.out.println(s2);// 10
} static void test(StringBuffer s, StringBuffer s2) {
System.out.println(s);// 1
System.out.println(s2);// 2
s2 = s;// 3
s = new StringBuffer("new");// 4
System.out.println(s);// 5
System.out.println(s2);// 6
s.append("hah");// 7
s2.append("hah");// 8
}
}问下9 10的输出为什么是goodhah和bad? 请给个详细的说法谢谢!!
public static void main(String[] args) {
StringBuffer s = new StringBuffer("good");
StringBuffer s2 = new StringBuffer("bad");
test(s, s2);
System.out.println(s);// 9
System.out.println(s2);// 10
} static void test(StringBuffer s, StringBuffer s2) {
System.out.println(s);// 1
System.out.println(s2);// 2
s2 = s;// 3
s = new StringBuffer("new");// 4
System.out.println(s);// 5
System.out.println(s2);// 6
s.append("hah");// 7
s2.append("hah");// 8
}
}问下9 10的输出为什么是goodhah和bad? 请给个详细的说法谢谢!!
2.方法中s2 = s 将s2的引用改为了s(即指向了s的地址,成了s的引用);
s = new StringBuffer("new")则将s的引用改变了,不再是以前那个对象,
所有后面的s.append("hah") 是改变新的对象的值,s2.append("hah")实质时改变
以前的s指向的对象
s的地址给了s2,实际上后面的s2就是s.
而后来s new了,不指向原地址
所以没有修改以前s以前s引用地址的值.