java 如何传实参
传递实参的方式
在Java中,实参(实际参数)是通过方法调用传递给形参(形式参数)的值。Java中的参数传递机制是按值传递,即传递的是变量的副本而非变量本身。以下是几种常见的传参方式:
基本数据类型传参
对于基本数据类型(如int、double、boolean等),传递的是值的副本。方法内部对形参的修改不会影响实参的值。

public class Main {
public static void modifyValue(int value) {
value = 100;
}
public static void main(String[] args) {
int num = 10;
modifyValue(num);
System.out.println(num); // 输出10,原值未改变
}
}
对象类型传参
对于对象类型(如数组、类实例等),传递的是对象引用的副本。方法内部可以通过引用修改对象的属性,但不能改变实参引用的对象。

public class Main {
public static void modifyArray(int[] arr) {
arr[0] = 100; // 修改数组元素
}
public static void main(String[] args) {
int[] array = {10, 20, 30};
modifyArray(array);
System.out.println(array[0]); // 输出100,数组内容被修改
}
}
可变参数(Varargs)
Java支持可变参数,允许方法接受数量不定的实参。可变参数在方法内部表现为数组。
public class Main {
public static void printValues(String... values) {
for (String value : values) {
System.out.println(value);
}
}
public static void main(String[] args) {
printValues("A", "B", "C"); // 传递多个实参
}
}
通过引用修改对象
虽然Java是值传递,但可以通过对象引用的副本修改对象的属性。例如,通过setter方法修改对象的字段。
class Person {
private String name;
public void setName(String name) {
this.name = name;
}
public String getName() {
return name;
}
}
public class Main {
public static void changeName(Person p) {
p.setName("Alice");
}
public static void main(String[] args) {
Person person = new Person();
person.setName("Bob");
changeName(person);
System.out.println(person.getName()); // 输出Alice
}
}
注意事项
- 基本数据类型的传递不会影响实参的值。
- 对象类型的传递可以修改对象的属性,但不能改变实参引用的对象。
- 可变参数提供了一种灵活的方式传递多个实参。






