Java中传值和传引用

public class Demo01 {
     int a = 0;
    public static void main(String[] args) {
        Demo01 demo01 = new Demo01();

        demo01.test(demo01.a);
        System.out.println(demo01.a);//0

        demo01.test01(demo01);
        System.out.println(demo01.a);//1

    }
    public  void test(int a){//传递的是值
        a = a=1;
    }
    public void test01(Demo01 s){//传递的是引用
        s.a = s.a + 1;

    }
}

在Java中只有传值这一个概念(实参将值传递给形参),但是test方法中传递的是形参的值,而不是形参的地址值,test01方法传递的是引用值(就是地址值)
我们可以看作方法中的形参复制了传递过来的实参的值。然后对这个值进行操作,如果传递过来的是基本数据类型,那么仅仅改变了传递过来的值,而没有改变实际值,如果传递过来的是地址值,那么对地址的改变就会直接哟影想实参的值



 

posted @ 2020-06-12 12:16  七月在野,八月在宇  阅读(200)  评论(0编辑  收藏  举报