加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – 将引用类型变量作为方法参数传递

发布时间:2020-12-15 08:32:01 所属栏目:Java 来源:网络整理
导读:运行下面的代码后,我得到这个输出: 前夕 1200 谁能解释一下为什么Person类型变量的值被改变而Integer类型变量的值不是? 我已经读过这个: www.javaworld.com/javaworld/javaqa/2000-05/03-qa-0526-pass.html www.yoda.arachsys.com/java/passing.html#form
运行下面的代码后,我得到这个输出:
前夕
1200

谁能解释一下为什么Person类型变量的值被改变而Integer类型变量的值不是?
我已经读过这个:

> www.javaworld.com/javaworld/javaqa/2000-05/03-qa-0526-pass.html
> www.yoda.arachsys.com/java/passing.html#formal

但我不明白为什么使用Person和Integer类型它的工作方式不同.

public class Test {
    public static void main(String[] args) {
        Object person = new Person("Adam");
        Object integer = new Integer("1200");

        changePerson(person);
        changeInteger(integer);

        System.out.println(person);
        System.out.println(integer);
    }

    private static void changeInteger(Object integer) {
        integer = 1000;
    }

    private static void changePerson(Object person) {
        ((Person)person).name="Eve"; 
    }
}

解决方法

在Java中,primitive types(例如整数)总是由值专门处理,对象(例如您的Person)和数组总是由 reference专门处理.

如果传递原语,则将复制该值,如果传递引用类型,则将复制地址,因此存在差异.

如果你按照上面的链接和/或做一些googlin’你会发现更多.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读