Java_总结十(Java中一直认为只有值传递,是否还有引用传递——有)

说明:引用传递在Java中一直存在争议

一、值传递

 

public class Test {
    public static void change(int a){
        a=20;
    }
    public static void main(String[] args) {
        int a=10;
        System.out.println(a);
        change(a);
        System.out.println(a);
    }
}

结果:
  10
  10

  很显然输出的 是10,10。传递的是值的一份拷贝,这份拷贝与原来的值没什么关系。

 

二、引用传递(对于对象(数组,类,接口)的传递似乎有点像引用传递)

  所谓的引用传递就是指将堆内存空间的使用权交给多个栈内存空间

public class Test {
    public static void change(int []a){
        a[0]=50;
    }
    public static void main(String[] args) {
        int []a={10,20};
        System.out.println(a[0]);
        change(a);
        System.out.println(a[0]);
    }
}

  显然输出结果为10   50。实际传递的是引用的地址值。

 

posted @ 2017-05-08 13:25  Java_皮卡丘漏电  阅读(91)  评论(0编辑  收藏  举报