值传递是啥你真的了解吗

本文通过实例讲解了Java中的值传递和引用传递概念,指出在值传递中方法操作的是副本,不会影响原始变量,而引用传递则允许方法修改原始变量。通过一道例题展示了如何在Java中解决值传递中遇到的问题。

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


前言

想学好Java,就必须要弄明白值传递的来龙去脉,话不多说,这一章节,直接用例题说明这个关键点!!!


一、例题引入

例题:问,以下代码输出结果是什么?

public class work8 {
    public static void main(String[] args) {
        int i = 99;
        mb_operate(i);
        System.out.println(i + 100);

    }
    static void mb_operate(int j) {
        j+=100;
    }
}

正确答案:
在这里插入图片描述
199!!!当你觉得这道题的答案是299的时候,你要仔细看这篇文章啦!!!


二、值传递和引用传递?

1.概念

(1)值传递

值传递是指将参数的值复制一份,然后将这份副本传递给方法或赋值给新的变量。在值传递中,方法或函数无法直接修改原始变量的值,因为它们操作的是参数的副本。在值传递中,如果在方法内部修改了参数的值,那么只会影响到方法内部的副本,而原始变量的值保持不变。
换句话说:
在传值的时候,把原件保留,复印件给传出去,然后接下来的操作一直都针对复印件,比如这道题,把复印件给mb_operate方法里了,他就只操作复印件,碰不到原件,而在上面的输出语句中的 i 是操作的原件,所以mb_operate方法对于最终的结果并没有什么改变,这道题的结果是199.

(2)引用传递

引用传递是指将参数的引用(内存地址)传递给方法或赋值给新的变量。在引用传递中,方法或函数可以通过引用访问和修改原始变量的值。在引用传递中,方法对参数的修改会直接影响到原始变量的值。因为方法操作的是原始变量的引用,所以对引用的修改会反映到原始变量上。
换句话说:
引用传递的时候传的不是复印件,传的是地址,也可以理解成原件的一种,在方法中进行一系列的操作,还是会操作到原件身上。


三、怎么解决值传递中遇见的问题

那么这道题里主要考查的是java中的值传递,换句话说,i 和 j 分别在两个方法中,分别是两个局部变量,井水不犯河水,如果这道题需要等于299的话,那么就只能将方法mb_operate加一个int型的返回值,把反馈回来的 j 再次赋给 i ,否则不能等于299。
那么我们就用一段代码来看一下怎么才能让这道题的结果等于299.

public class Test1 {
    public static void main(String[] args) {
        int i = 99;
        i = mb_operate(i);
        System.out.print(i + 100);
    }


    static int mb_operate(int j) {
        int m = j;
        j += 100;
        return j;
    }
}

进行二次赋值,用返回回来的复印件上的值,把原件的东西覆盖掉
运行结果:

在这里插入图片描述


总结

以上个人对于值传递和引用传递的见解,本文用一道例题,巧妙地解释了Java中的值传递机制,但是一定不要将值传递和引用传递混淆,大家自己试着理解值传递,也欢迎大家在评论区积极讨论,希望这篇文章可以帮助到你!

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值