Java 方法参数传递是值传递,即将实参的值复制一份传递给形参,方法中对形参的任何修改都不会影响实参的值。但对于引用类型变量,其实该变量存储的是对象在内存中的地址,这个地址也是一个值,因此传递引用类型变量时,实际上传递的是该地址值,也就是将内存中的对象地址复制一份传递给形参,此时形参和实参引用的是同一个对象,方法对形参所做的任何修改都会影响该对象的状态,从而也影响实参。
以下是两个示例来说明 Java 方法参数传递如何实现。
示例一:传递基本类型参数
例如,我们定义了一个名为 swap
的方法,该方法接收两个参数 x
和 y
,并交换它们的值:
public static void swap(int x, int y) {
int temp = x;
x = y;
y = temp;
}
我们定义两个变量 a
和 b
,并将它们的值初始化为 2 和 3,分别作为参数传递给 swap
方法:
int a = 2, b = 3;
swap(a, b);
在方法内部,x
和 y
的值被交换了,但是该操作并不会影响 a
和 b
的值,因为 Java 传递基本类型参数时是值传递,即在方法内部修改形参的值并不会影响到实参。
示例二:传递引用类型参数
例如,我们定义了一个 Person
类,该类包含 name
属性、age
属性和 changeName
方法,该方法可以修改 name
属性的值:
public class Person {
private String name;
private int age;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
public void setName(String name) {
this.name = name;
}
public String toString() {
return "Person{name='" + name + "', age=" + age + "}";
}
}
我们定义一个 changeName
方法,该方法接收一个 Person
类型的参数 p
,并将其 name
属性的值修改为给定的字符串:
public static void changeName(Person p, String name) {
p.setName(name);
}
我们创建一个新的 Person
对象 person
,并将其作为参数传递给 changeName
方法,并且将 name
参数设置为 "Jack"
:
Person person = new Person("Tom", 20);
changeName(person, "Jack");
在这个例子中,实参 person
是一个对象,而形参 p
是一个引用类型变量,它们在方法调用时传递的是对象在内存中的地址,因此在 changeName
方法中对 p
的修改会影响到实参 person
引用的同一个对象,即将 name
属性的值修改为 "Jack"
。我们可以运行以下代码,验证 person
对象的 name
属性已经被修改:
System.out.println(person); // Person{name='Jack', age=20}
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Java方法参数传递如何实现 - Python技术站