先说答案:
Java 只有一种参数传递方式:值传递(pass-by-value)。
解释:
- 基本类型(int、double、boolean 等)
传递的是变量的“值”,函数内修改不影响原值。 - 引用类型(对象、数组)
传递的是“对象引用的副本”(也就是对象的地址副本),
可以通过这个副本去修改对象的内容,但无法更换原变量指向的对象。
举例:
示例 1:基本类型(无法修改原值)
void change(int x) {
x = 100;
}
int a = 10;
change(a);
System.out.println(a); // 输出 10 --值没变
示例 2:对象内容可以被修改
void modify(StringBuilder sb) {
sb.append(" world");
}
StringBuilder str = new StringBuilder("hello");
modify(str);
System.out.println(str); // 输出 hello world --应用对象改变内容
示例 3:尝试更换对象引用,失败
void reassign(StringBuilder sb) {
sb = new StringBuilder("new");
}
StringBuilder str = new StringBuilder("hello");
reassign(str);
System.out.println(str); // 仍输出 hello --传参传的是引用的副本
总结:
|
类型 |
Java传递方式 |
能否修改原值 |
|
基本类型 |
值的副本 |
❌ |
|
引用类型 |
引用的副本 |
✅(内容可变),❌(引用不可变) |
1317

被折叠的 条评论
为什么被折叠?



