自定义类PersonTest,实现方法change(int x)和change(Person p),并用值传递和引用传递运行代码
时间: 2024-10-27 07:07:48 浏览: 13
在`PersonTest`类中,我们可以创建这两个方法,分别处理值传递(接收整数)和引用传递(接收`Person`对象)。这里是一个简单的示例:
```java
public class PersonTest {
// 方法一:接受整数值传递
public void change(int x) {
int newX = x * 2; // 修改数值,不会影响外部变量
System.out.println("Changed value by passing by value: " + newX);
}
// 方法二:接受Person对象引用传递
public void change(Person p) {
if (p != null) {
p.setName("Changed"); // 直接修改了person对象的属性,会影响外部引用
System.out.println("Changed person's name by passing by reference: " + p.getName());
} else {
System.out.println("Cannot change a null person");
}
}
// 测试代码
public static void main(String[] args) {
Person person = new Person("Original Name");
PersonTest test = new PersonTest();
// 使用值传递
int num = 5;
test.change(num); // 输出:Changed value by passing by value: 10
// 使用引用传递
test.change(person); // 输出:Changed person's name by passing by reference: Changed
System.out.println("After calling the method: " + person.getName()); // 输出:Changed
}
}
// Person 类省略
```
在上述代码中,`change(int x)`方法中的`newX`是`x`的一个副本,所以对它进行操作不会改变原始的`num`值。而`change(Person p)`方法中,由于`p`是对`Person`对象的引用,所以我们可以直接修改它的属性。
阅读全文