java 如何传值
传值方式概述
在Java中,传值方式分为基本数据类型传值和引用类型传值两种。基本数据类型(如int、double等)直接传递值的副本,而引用类型(如对象、数组)传递的是引用的副本,实际对象内容可能被修改。
基本数据类型传值
基本数据类型通过值传递(Pass by Value),方法内修改不影响原始变量。

public class Main {
static void modifyValue(int x) {
x = 20; // 修改副本,不影响原始值
}
public static void main(String[] args) {
int num = 10;
modifyValue(num);
System.out.println(num); // 输出: 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[] nums = {1, 2, 3};
modifyArray(nums);
System.out.println(nums[0]); // 输出: 100
}
}
不可变对象的特殊性
String等不可变对象虽为引用类型,但修改时会创建新对象,原始引用不变。
public class Main {
static void modifyString(String s) {
s = "New String"; // 新对象,不影响原始引用
}
public static void main(String[] args) {
String str = "Original";
modifyString(str);
System.out.println(str); // 输出: Original
}
}
总结
- 基本类型:传递值的副本,方法内修改不影响原始变量。
- 引用类型:传递引用的副本,方法内修改对象属性会影响原始对象。
- 不可变对象(如
String):行为类似基本类型,因修改会创建新对象。






