您的位置:首页 > 编程语言 > Java开发

Java只有值传递,没有引用传递

2019-06-07 20:54 323 查看

今天在牛客上做了一道题目。
以下代码结果是什么?
public class foo {
public static void main(String sgf[]) {

StringBuffer a=new StringBuffer(“A”);

StringBuffer b=new StringBuffer(“B”);

operate(a,b);

System.out.println(a+”.”+b);
}
static void operate(StringBuffer x,StringBuffer y) {
x.append(y);
y=x;
}
}
我选的答案是 AB.AB
其实正确的解答应该时AB.B才是对的
看了解析加上看了GitHub中的内容我才明白
1.在还没有进行交换前
a和x 都是指向 “A”的
其中x 是a 的拷贝品 指向地址 a
b和y 是指向“B”的
其中 y是b 的拷贝品 指向地址 b
这时候 对 x 进行了 append 操作, 于是地址 a 进行了 append 操作 得到了AB
这个时候,将x 的地址给了 y 于是改变了y 指向的地址,此时y 指向了 a地址
但是 对于b 来说,它本身的地址是没有受到影响的。所以结果是AB.B

在GitHub上看到了更全面的解答
GitHub地址 为什么 Java 中只有值传递?
有兴趣的可以去看。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: