5分钟让你明白Java只有值传递

很多人说,Java不光有值传递,还有引用传递,在CSDN和博客园都有很多类似的贴子,通过那种"看似"有说服力的代码和例子证明引用传递的存在性,我想让诸君花五分钟看看我的解释

首先明确一点! Java只有 只有 只有 值传递

public class demo {
        public static void main(String[] args) {
           int a = 1;
                change(a);
                System.out.println(a);
        }
        public  static void change(int x){
                x=10;
                return;
        }
}

在这里插入图片描述
这几行简单的代码相信大家都能看得懂,从结果就能看出,a只是在方法里面change方法里面“走了一遭”,而他的值没有改变,很容易理解这是值传递

然后放出一些人很爱用来”说事“的代码

package com.ycy;

public class demo {
        public static void main(String[] args) {
                Person person = new Person();
                System.out.println(person.name);//结果是null
                demo.change(person);
                System.out.println(person.name);//结果是ycy
        }
        public static void change(Person a)
        {a.name = "ycy";}
}
        //定义了一个Person类,有一个name属性
         class Person{
                String name;
        }

在这里插入图片描述
有人会说,name打印出来不一样啊!!这不就是引用传递吗!!

一句关键句

person是一个引用,指向的是Java堆里面的对象!

在这里插入图片描述
change方法改变的name其实修改的是Person类,导致最终输出的结果不一样了,本质上来说,这不是引用传递

你,明白了吗
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值