值傳遞和引用傳遞區別

        值傳遞:(形式參數類型是基本數據類型):方法調用時,實際參數把它的值傳遞給對應的形式參數,形式參數只是用實際參數的值初始化本身的存儲單元內容,是兩個不一樣的存儲單元,因此方法執行中形式參數值的改變不影響實際參數的值。數組

        引 用傳遞:(形式參數類型是引用數據類型參數):也稱爲傳地址。方法調用時,實際參數是對象(或數組),這時實際參數與形式參數指向同一個地址,在方法執行 中,對形式參數的操做實際上就是對實際參數的操做,這個結果在方法結束後被保留了下來,因此方法執行中形式參數的改變將會影響實際參數。dom

        能夠這樣理解:對象

        基本數據類型賦值屬於值傳遞,引用數據類型賦值屬於引用傳遞。字符串

        值傳遞是實實在在的變量賦值,引用傳遞傳遞的是對象的引用地址。變量

        值傳遞以後,兩個變量改變的是各自的值,互不影響,而引用傳遞,兩個引用改變的是同一個對象的狀態。數據類型

先看例子吧引用

結果不受影響
方法

結果是受真正調用的影響!im


        在所謂的引用傳遞中,當new一個對象demo的時候,main中的a指向的是實例Demo中的a,當執行到12行的時候,是修改了實例中的a的值,即45,而當執行到13行的時候,a的值又指向了30。數據



        一樣,因爲dome中的d是從新實例化的,此時的a是實例中的值10,因此這個時候main中的a和demo中的a其實並非同一個a,因此是不一樣值。

        按值傳遞是傳遞的值的拷貝,按引用傳遞其實傳遞的是引用的地址值,因此統稱按值傳遞。

        在Java裏面只有基本類型和按照下面這種定義方式的String是按值傳遞,其它的都是按引用傳遞。就是直接使用雙引號定義字符串方式。

相關文章
相關標籤/搜索