public class Foo {
public static void main(String[] args) {
StringBuffer a=new StringBuffer("A");
StringBuffer b=new StringBuffer("B");
operator(a,b);
System.out.println(a+","+b);
}
public static void operator(StringBuffer x,StringBuffer y){
x.append(y);
y=x;
}
}
结果为什么不是//AB,AB
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
4条回答 默认 最新
- 诸相非相 2016-02-01 13:37关注
y=x试图重新设置y这个引用变量指向地址(即指向a的地址),但不会成功。因为java方法参数都是传值调用,在方法中对于参数值的修改并不会实际修改外部相应的变量,也即是说operator(a,b)之后,b引用变量中的值(即new StringBuffer("B")对象的地址)并没有改变,因此System.out.println(a+","+b);打印的结果应该是:AB,B
解决 无用评论 打赏 举报
悬赏问题
- ¥15 数学的三元一次方程求解
- ¥20 iqoo11 如何下载安装工程模式
- ¥15 本题的答案是不是有问题
- ¥15 关于#r语言#的问题:(svydesign)为什么在一个大的数据集中抽取了一个小数据集
- ¥15 C++使用Gunplot
- ¥15 这个电路是如何实现路灯控制器的,原理是什么,怎么求解灯亮起后熄灭的时间如图?
- ¥15 matlab数字图像处理频率域滤波
- ¥15 在abaqus做了二维正交切削模型,给刀具添加了超声振动条件后输出切削力为什么比普通切削增大这么多
- ¥15 ELGamal和paillier计算效率谁快?
- ¥15 蓝桥杯单片机第十三届第一场,整点继电器吸合,5s后断开出现了问题