java 如何传值
基本数据类型传值
在Java中,基本数据类型(如int、double、char等)通过值传递。方法调用时,传递的是变量的副本,修改副本不会影响原始值。
示例代码:
public class Main {
static void modifyValue(int num) {
num = 20; // 修改副本
}
public static void main(String[] args) {
int original = 10;
modifyValue(original);
System.out.println(original); // 输出10,原始值未改变
}
}
对象类型传值
对象类型(如数组、类实例)通过引用传递的副本。方法接收的是对象引用的副本,但副本和原始引用指向同一对象,因此修改对象属性会影响原始对象。
示例代码:
class Person {
String name;
Person(String name) { this.name = name; }
}
public class Main {
static void modifyObject(Person p) {
p.name = "Alice"; // 修改对象属性
}
public static void main(String[] args) {
Person person = new Person("Bob");
modifyObject(person);
System.out.println(person.name); // 输出"Alice",原始对象被修改
}
}
数组传值
数组作为对象类型,遵循引用传递的规则。方法内修改数组元素会影响原始数组。
示例代码:
public class Main {
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 Main {
static void modifyString(String s) {
s = "New String"; // 创建新对象
}
public static void main(String[] args) {
String original = "Original";
modifyString(original);
System.out.println(original); // 输出"Original",原始字符串未变
}
}
总结
- 基本数据类型:传递值的副本,原始值不受影响。
- 对象类型:传递引用的副本,修改对象属性会影响原始对象。
- 不可变对象:修改会创建新对象,原始引用不变。







