值传递和引用传递详解

值传递

敢问何为值传递?

我们通过查询百度百科知道: 值传递是指在调用函数时将实际参数复制一份传递到函数中,这样在函数中如果对参数进行修改,将不会影响到实际参数

通俗来讲,值传递就是将当前参数的值复制了一份,将复制的这一份传给了函数去操作,无论你怎么操作都不会影响参数原本的值

举栗:

public static void main(String[] args) {
        /**
         * java值传递--->基本数据类型
         * 在调用函数时,会将实际参数复制一份副本
         * 将副本传入函数进行操作,在函数体中副本的值产生变化但不会影响实际参数
         */
        int number = 9;
        new Demo03().add(number);
        System.out.println(number);//---->9
    }
    public void add(int number){
        number +=1;
    }

引用传递

那么敢问何为引用传递?

再查百度百科:

在C++中,函数参数的传递方式有引用传递。所谓引用传递是指在调用函数时将实际参数的地址传递到函数中,那么在函数中对参数所进行的修改,将影响到实际参数。

虽说是c++,但是本质相同。我们知道引用数据类型分为两个部分分别是引用变量和对象,引用变量存放在中而对象则存储再堆内存中,引用变量指向堆中的一个对象。

而当我们将引用数据类型传递给函数时,所传递出去的是一份引用变量的副本,而引用变量指向堆内存中的对象,所以函数操作该副本是,其实际参数也会受到影响

public static void main(String[] args) {
        Student stus = new Student("小明", 20);
            change(stus);
        System.out.println(stus);//引用传递传递
        //--->Student{name='小红', age=20}
    }
    public static void change(Student student){
        student.setName("小红");
    }

特殊的String

引用类型中的String的值是放在常量池中,我们改变副本的值不会影响到原来的值

public static void main(String[] args) {
        String temp = "贴贴";
        change(temp);
        System.out.println(temp);
    }
    public static void change(String temp){
        temp = "抱抱";
    }
/*输出:贴贴  */
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

绿仔牛奶_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值