JAVA是引用傳遞還是值傳遞

一、定義(通俗理解)

引用傳遞:顧名思義就是一個變量賦給另一個變量的時候兩個變量指向的是同一個對象;

值傳遞:一個變量賦給另一個變量另一個變量指向的是一個新的對象(也就是當前對象的複製)

那麼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());

 很簡單 以上的例子輸出的值到底是main a=100還是main a=101呢。我想大家一眼都能看出來是main a=100
那麼這如何說明java是何種傳遞方式呢;看圖


methodTwo方法調用的時候就就是這樣的



所以就很容易看出來第二個的值改變了,第一個的值依然是原來的;在new一個新的對象出來之後,methodTwo方法的a指向了新的對象實例,所以怎麼改變都不會改變main方法中a的對象。同時也可以證明,java中只有值傳遞沒有引用傳遞,在傳遞對象時,是傳遞對象的引用的副本,不是直接傳遞對象的引用本體。

總結:Java只有值傳遞

ps:部分圖片和實例因爲本人太懶盜用了他人的圖,不會涉及版權吧,哈哈,同時以上的理解也是在我的理解之上去網上查詢的。鏈接:http://blog.csdn.net/xiaosha009/article/details/50680199


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章