值传递与地址传递

本文深入探讨了值传递和地址传递两种参数传递方式的区别。通过具体的Java代码示例,展示了值传递下函数内部对参数的修改不会影响原始变量,而地址传递下,由于共享同一内存地址,函数内的修改会直接影响原始变量。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、值传递(pass by value)是指在调用函数时将实际参数复制 一份传递到函数中,这样在函数中如果对 参数 进行修改,将不会影响到实际参数。

public static void main(String[] args) {
        int a = 10 ;
        test(a);
        System.out.println("a"+a);
    }
    public static void test(int y){
        y = 0 ;
        System.out.println("y"+y);
    }

此时输出结果为:
y0;
a10;
可以看出此时只是讲a的值传递给了test方法,而没有改变a的值,仍为10。
2、地址传递是指在调用函数时将实际参数的地址直接传递到函数中,那么在函数中对 参数 所进行的修改,将影响到实际参数。

 public static void main(String[] args) {
        int [] array = new int[]{10};
        System.out.println(array[0]);
        System.out.println("========");
        test(array);
        System.out.println(array[0]);
    }
    public static void test(int [] y){
        y[0] = 0;
    }

此时输出结果为:
在这里插入图片描述
可以看出原来的数值已经被改变了,如果我们直接对array进行输出,此时输出的是地址值,而如果对前面代码中的a进行直接输出则为10。也就是说在第二个程序里,调用方法的时候将array的地址值传递给test方法,两者共用一个地址值,此时执行方法中的 y[0] = 0; 即将此地址值存放的数据变为0,此事再次进行输出array[0],很明显就是0。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值