java 如何 传值
Java 传值机制详解
Java 中的传值机制严格遵循按值传递原则,但具体表现因数据类型(基本类型或引用类型)而异。以下是具体分析:

基本数据类型的传值
基本类型(如 int, double, char 等)直接传递值的副本,修改副本不会影响原始变量。

void modifyValue(int x) {
x = 10; // 修改的是副本
}
public static void main(String[] args) {
int num = 5;
modifyValue(num);
System.out.println(num); // 输出 5(原值未变)
}
引用数据类型的传值
对象类型(如数组、类实例)传递的是引用的副本(即内存地址的副本),通过副本仍可修改原对象内容,但无法修改原引用本身。
class Person {
String name;
Person(String name) { this.name = name; }
}
void modifyObject(Person p) {
p.name = "Alice"; // 修改原对象内容
p = new Person("Bob"); // 修改副本引用(不影响原引用)
}
public static void main(String[] args) {
Person person = new Person("John");
modifyObject(person);
System.out.println(person.name); // 输出 "Alice"(原对象内容被修改)
}
特殊案例:String 和包装类
String 和包装类(如 Integer, Double)虽然是引用类型,但其不可变性导致表现类似基本类型。
void modifyString(String s) {
s = "new string"; // 创建新对象,原引用不变
}
public static void main(String[] args) {
String str = "original";
modifyString(str);
System.out.println(str); // 输出 "original"
}
关键总结
- 基本类型:传递值的副本,原值不受影响。
- 引用类型:传递引用的副本,可修改原对象内容,但无法重定向原引用。
- 不可变对象:行为类似基本类型,因无法修改原内容。






