一、定義(通俗理解)
引用傳遞:顧名思義就是一個變量賦給另一個變量的時候兩個變量指向的是同一個對象;
值傳遞:一個變量賦給另一個變量另一個變量指向的是一個新的對象(也就是當前對象的複製)
那麼java到底是值傳遞還是引用傳遞呢?
對於初學者或者說沒有仔細思考過的同學來說這個概念即使知道了也沒有很明確的答案!(ps:哈哈 至少我當初就是這樣的 ,現在想想寫下來和大家交流學習學習)
舉個例子隨便看看就好:
public static void methodTwo(List<Integer> a) {
a = new ArrayList<Integer>();// 就在這加了這一句
a.add(101);
}
public static void main(String[] args) {
List<Integer> a = new ArrayList<Integer>();
a.add(100);
methodTwo(a);
System.out.println("main a="+a.toString());
}
所以就很容易看出來第二個的值改變了,第一個的值依然是原來的;在new一個新的對象出來之後,methodTwo方法的a指向了新的對象實例,所以怎麼改變都不會改變main方法中a的對象。同時也可以證明,java中只有值傳遞沒有引用傳遞,在傳遞對象時,是傳遞對象的引用的副本,不是直接傳遞對象的引用本體。
總結:Java只有值傳遞
ps:部分圖片和實例因爲本人太懶盜用了他人的圖,不會涉及版權吧,哈哈,同時以上的理解也是在我的理解之上去網上查詢的。鏈接:http://blog.csdn.net/xiaosha009/article/details/50680199