为什么你看到的“传引用”其实是“传值
1. 一段有趣又令人困惑的代码
public static void main(String[] args) {
String x = new String("ab");
change(x);
System.out.println(x);
}
public static void change(String x) {
x = "cd";
}
这段代码输出的是 "ab"。
作为对比,C++ 中类似的写法:
void change(string &x) {
x = "cd";
}
int main() {
string x = "ab";
change(x);
cout << x << endl;
}
输出的是 "cd"。
为什么行为不同?这背后是 Java 和 C++ 在参数传递机制上的根本差异。
2. 常见误解分析
很多人会这样理解:
变量
x存储的是指向堆中"ab"字符串对象的引用。当x作为参数传入change()方法时,它仍然指向"ab"。

This chapter requires login to view full content. You are viewing a preview.
Login to View Full Content