java 如何传值
传值方式概述
Java中的传值方式主要分为基本数据类型传值和引用类型传值。基本数据类型传递的是值的副本,而引用类型传递的是对象引用的副本。
基本数据类型传值
基本数据类型(如int、double、char等)在方法调用时传递的是值的副本。修改副本不会影响原始变量。
示例代码:
public class PassByValue {
public static void modifyValue(int num) {
num = 20;
}
public static void main(String[] args) {
int originalNum = 10;
modifyValue(originalNum);
System.out.println(originalNum); // 输出10
}
}
引用类型传值
引用类型(如对象、数组)传递的是对象引用的副本。虽然引用本身是副本,但指向的对象是同一个,因此通过引用修改对象会影响原始对象。

示例代码:
public class PassByReference {
static class Person {
String name;
Person(String name) {
this.name = name;
}
}
public static void modifyPerson(Person p) {
p.name = "Modified";
}
public static void main(String[] args) {
Person originalPerson = new Person("Original");
modifyPerson(originalPerson);
System.out.println(originalPerson.name); // 输出Modified
}
}
数组传值
数组作为引用类型,传递的是数组引用的副本。通过副本引用可以修改数组内容。

示例代码:
public class PassArray {
public static void modifyArray(int[] arr) {
arr[0] = 100;
}
public static void main(String[] args) {
int[] originalArray = {1, 2, 3};
modifyArray(originalArray);
System.out.println(originalArray[0]); // 输出100
}
}
不可变对象传值
对于String等不可变对象,传递的是引用的副本。但由于对象不可变,任何修改都会创建新对象,不影响原始引用。
示例代码:
public class PassString {
public static void modifyString(String str) {
str = "Modified";
}
public static void main(String[] args) {
String originalStr = "Original";
modifyString(originalStr);
System.out.println(originalStr); // 输出Original
}
}
总结
- 基本数据类型:传递值副本,原始值不受影响
- 引用类型:传递引用副本,可通过引用修改对象
- 不可变对象:传递引用副本,但修改会创建新对象






