public class StringTest {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
StringBuffer a = new StringBuffer("A");
StringBuffer b = new StringBuffer("B");
operate(a,b);
System.out.println(a.toString() + "," + b);
}
static void operate(StringBuffer x, StringBuffer y) {
// TODO Auto-generated method stub
y.append(x);
// System.out.println("=============");
// System.out.println("y=:"+y+"这是传入的b");
// System.out.println("x=:"+x+"这是传入的a");
y = x;
// System.out.println(y = x);
// System.out.println("-------------");
// System.out.println("y=:"+y);
// System.out.println("x=:"+x);
// System.out.println("=============");
}
}
结果:A,BA
比如string a=A这里字符"A"会开辟一个物理地址来存储"A"这个值,引用a也会开辟一个物理地址用来存放字符"A"存储的所在地址。当你用string b = a来赋值的时候,是把a的物理地址传递给b而不是字符"A"的地址。这时候改变b引用的内容,丝毫不会影响到a引用的内容。然后方法结束后这两个临时的变量a和b都被抛弃了,这丝毫不会改变y所引用的对象。
【推荐】还在用 ECharts 开发大屏?试试这款永久免费的开源 BI 工具!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步