为了账号安全,请及时绑定邮箱和手机立即绑定

值传递和引用传递到底有啥区别啊!

值传递和引用传递到底有啥区别啊!

BlessingLee 2017-03-18 23:32:48
值传递和引用传递到底有啥区别啊!百度查过,我也能理解意思。但是要是在程序里面该如何区别值传递和引用传递啊。求大神告诉。
查看完整描述

3 回答

已采纳
?
尧叔

TA贡献77条经验 获得超201个赞

关于Java值传递和引用传递的特性

需要注意的是在方法调用那块传入参数对原值是否修改的问题,
基本类型都是值传递:

public class Boy {
    private int size;
    private String[] position;

    public void addSize(int size) {
        size++;
    }
    
    public static void main(String[] args) {
        Boy me = new Boy();
        int mySize = 18;
        System.out.println(mySize+"cm");
        me.addSize(mySize);
        System.out.println(mySize+"cm");
    }
}

两次输出都是18,因为mySize作为方法参数时,会复制一份值在方法内操作,方法操作mySize时不影响原来的值。

而对象作为方法参数时是引用传递,顾名思义,拷贝了一份引用到方法里面进行操作,两个引用指向的是同一实例,所以修改引用的值会造成原实例的值被修改。

public class Boy {
    private int size;
    private String[] position;

    public void addSize(Boy boy) {
        boy.size++;
    }

    public void setSize(int size) {
        this.size = size;
    }

    public int getSize() {
        return size;
    }

    public static void main(String[] args) {
        Boy me = new Boy();
        me.setSize(18);
        System.out.println(me.getSize()+"cm");//18cm
        //这里me作为方法参数时传递的是引用,指向的同一对象。
        me.addSize(me);
        System.out.println(me.getSize()+"cm");//19cm
    }
}


查看完整回答
1 反对 回复 2017-03-20
?
onemoo

TA贡献883条经验 获得超454个赞

看到你是在 Java 区中提问的,我不知道你是不是会错意了。因为:Java 中 method 传参是值传递,Java 没有引用传递。


C 语言中也只有传值,C++ 中是有传值和传引用两种方式...

查看完整回答
1 反对 回复 2017-03-18
?
肥冰

TA贡献101条经验 获得超60个赞

值传递只出现在八大基础类型 直接用=就是值传递,如果是对应的包装类作为参数传递时候也是值传递.

剩下对象之间都是通过引用传递.


查看完整回答
反对 回复 2017-03-19
  • 3 回答
  • 2 关注
  • 1547 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信