1. 基本类型的参数传递
当你将基本类型作为参数传递给方法时,传递的是该基本类型的值的副本。对这个副本的修改不会影响原始变量。
public class Main {
public static void main(String[] args) {
int number = 10;
System.out.println("Before method call: " + number); // 输出: 10
modifyValue(number);
System.out.println("After method call: " + number); // 输出: 10
}
public static void modifyValue(int num) {
num = num + 5; // 这里修改的是 num 的副本
}
}
输出结果:
Before method call: 10
After method call: 10
在这个例子中:
number的值为10,并被作为参数传递给modifyValue方法。- 在
modifyValue方法中,num是number的副本,修改num不会影响number,因此number仍然保持为10。
2. 引用类型的参数传递
当你将引用类型作为参数传递给方法时,传递的是对象的引用(内存地址)的副本。这意味着对这个引用的修改会影响原始对象。
public class Main {
public static void main(String[] args) {
Person person = new Person("Alice");
System.out.println("Before method call: " + person.getName()); // 输出: Alice
modifyName(person);
System.out.println("After method call: " + person.getName()); // 输出: Bob
}
public static void modifyName(Person p) {
p.setName("Bob"); // 这里修改的是引用指向的对象
}
}
class Person {
private String name;
public Person(String name) {
this.name = name;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
输出结果:
Before method call: Alice
After method call: Bob
在这个例子中:
person对象的引用被作为参数传递给modifyName方法。- 在
modifyName方法中,p引用指向与person相同的Person对象,因此对p的修改(调用setName("Bob"))会影响原始对象person,导致person.getName()返回Bob。
总结
- 基本类型:传递的是值的副本,修改副本不会影响原始变量。
- 引用类型:传递的是对象引用的副本,修改引用指向的对象会影响原始对象。
这就是基本类型和引用类型在参数传递中的主要区别。
514

被折叠的 条评论
为什么被折叠?



