Java的值传递机制

本文探讨了Java中参数传递的方式,重点在于值传递的概念。通过一个交换两个数的值的示例,说明了基本数据类型作为参数时,原始变量不受方法内部操作影响。为了解决这个问题,引入了引用数据类型,解释了引用参数如何允许方法修改原始对象的值。通过使用自定义类`Data`,成功实现了数值交换。总结了引用数据类型参数传递的工作原理。
摘要由CSDN通过智能技术生成

Java中的参数分为

实参:方法调用时实际传给形参的参数值

形参 :方法声明时的参数

而Java里方法的参数传递方式只有一种:值传递即将实际参数值的副本(复制品)传入方法内,而参数本身不首影响。

下面的例子是想要交换两个数的值,为了方便起见把交换过程,封装到一个方法里面,然而得到的结果却不是我们想要的,这个问题就是上面是介绍的当形参是基本数据类型时,参数本身不受影响。 

public class Swap {
    public static void main(String[] args) {
        int a=10;
        int b=20;
        Swap s=new Swap();
        s.swap1(a,b);
        System.out.println("a="+a+"b="+b);
    }
    public void swap1(int a,int b){
        int t=a;
        a=b;
        b=t;
    }
}

要想解决上面是的问题,就必须换成引用数据类型,当形参是引用数据类型时,传递的是地址值,也就是他们都指向同一个地址。

public class Swap {
    public static void main(String[] args) {
        Data data=new Data();
        data.a=10;
        data.b=20;
        Swap s=new Swap();
        s.swap1(data);
        System.out.println("a="+data.a+"b="+data.b);
    }
    public void swap1(Data data){
        int t=data.a;
        data.a=data.b;
        data.b=t;
    }
}
class Data{
    int a;
    int b;
}

引用数据类型进行参数传递时的工作过程如下

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值