Java是值传递 传的是地址值
eg.下列代码的输出是什么?
public static void main(String[] args) {
StringBuffer a = new StringBuffer("A");
StringBuffer b = new StringBuffer("B");
change(a, b);
System.out.println(a+","+b);
}
public static void change(StringBuffer x,StringBuffer y) {
x.append(y);
y = x;
}
变量ab入栈,在堆内存开辟内存空间,将AB存入字符串常量池,ab指向堆内存的内存空间,内存空间指向字符串常量池里的AB
调用change方法 参数xy入栈 并将ab地址值分别赋给xy;xy也指向了AB字符串常量
调用append拼接AB x指向AB
赋值 y指向拼接后的字符串AB
方法调用完后出栈 xy销毁 但堆内存里不变,ab指向对应的堆内存,堆内存分别指向AB,B



