首页 > 编程语言 > 详细

java 是 传值还是传址 Pass-by-value or Pass-by-reference

时间:2019-06-10 22:25:25      阅读:109      评论:0      收藏:0      [点我收藏+]

原文在此,写的非常好,解答了我的疑问
http://www.javadude.com/articles/passbyvalue.htm

首先放上一段代码,我是在找寻这段代码的内部原理的时候,在stackoverflow上看到了上面那篇文章作者的答案,于是阅读一番,受益匪浅

package learnJava;

    class A{
        int value;
        public A(int value) {
            this.value = value;
        }
        public void setValue(int value) {
            this.value = value;
        }
        public int getValue() {
            return value;
        }
    }
public class TestClass {
        public static void changeValue(A a, A b){ //这只是改变了指向Object的局部变量指针的值,所以method外面是不会改变的
            a = b;
        }
        public static void changeValue2(A a){ //这里是对局部变量的指针指向的Object进行set操作,所以method外也会改变
            int v = a.getValue();
            v++;
            a.setValue(v);
        }
        public static void main(String[] args) {
            A a1 = new A(3);
            A a2 = new A(8);

            System.out.println(a1.value); // 3
            changeValue(a1, a2);
            System.out.println(a1.value); // 3
            changeValue2(a1);
            System.out.println(a1.value); // 4
        }
    }

java 是 传值还是传址 Pass-by-value or Pass-by-reference

原文:https://www.cnblogs.com/wmxl/p/11000526.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!