Java 参数传递

在Java中,参数传递主要有两种方式:值传递(Pass by Value)和引用传递(Pass by Reference)。理解这两种传递方式对于掌握Java编程至关重要。

值传递(Pass by Value)

概念解释
值传递是指在调用方法时,实际参数的值被复制给形式参数。方法内部对形式参数的修改不会影响到实际参数。

编程示例

public class PassByValueExample {
    public static void main(String[] args) {
        int x = 10;
        System.out.println("Before method call: x = " + x);
        modifyValue(x);
        System.out.println("After method call: x = " + x);
    }

    public static void modifyValue(int num) {
        num = 20;
        System.out.println("Inside method: num = " + num);
    }
}

输出结果

Before method call: x = 10
Inside method: num = 20
After method call: x = 10

解释

  • main方法中,变量x的值是10。
  • 调用modifyValue(x)时,x的值10被复制给形式参数num
  • modifyValue方法内部,num被修改为20,但这不会影响到main方法中的x
  • 因此,main方法中的x仍然是10。

引用传递(Pass by Reference)

概念解释
在Java中,对象的引用是通过值传递的。这意味着在调用方法时,实际参数(对象引用)的值被复制给形式参数。方法内部对形式参数所指向的对象的修改会影响到实际参数所指向的对象。

编程示例

public class PassByReferenceExample {
    public static void main(String[] args) {
        Person person = new Person("Alice", 30);
        System.out.println("Before method call: " + person);
        modifyPerson(person);
        System.out.println("After method call: " + person);
    }

    public static void modifyPerson(Person p) {
        p.setName("Bob");
        p.setAge(25);
        System.out.println("Inside method: " + p);
    }
}

class Person {
    private String name;
    private int age;

    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    @Override
    public String toString() {
        return "Person{name='" + name + "', age=" + age + "}";
    }
}

输出结果

Before method call: Person{name='Alice', age=30}
Inside method: Person{name='Bob', age=25}
After method call: Person{name='Bob', age=25}

解释

  • main方法中,创建了一个Person对象,并将其引用赋值给变量person
  • 调用modifyPerson(person)时,person的引用值被复制给形式参数p
  • modifyPerson方法内部,通过p修改了Person对象的属性(nameage)。
  • 由于pperson指向同一个Person对象,因此对Person对象的修改会影响到main方法中的person

总结

  • 值传递:基本数据类型(如intfloatboolean等)的参数传递方式。方法内部对形式参数的修改不会影响到实际参数。
  • 引用传递:对象引用的参数传递方式。方法内部对形式参数所指向的对象的修改会影响到实际参数所指向的对象。
  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值