在Java中呼叫方法或傳遞參數時,可分為兩種方式被傳遞,分別是「傳值」、「傳址」。
「傳值」是將變數的值複製一份給方法用,方法獲得的是複製品,而非原始資料。當傳入的參數是八大基本資料型別時,像是int,方法裡面對參數的改變,並不會影響到原本方法外變數的值。
「傳址」的字面解釋似乎是傳遞記憶體位址,但實際上是將記憶體位址參考的值傳遞給方法,此參考指向的是物件記憶體位置,因此並不是直接將記憶體位址傳遞。
當傳入的參數若是物件參考變數或陣列,就可以修改指向物件的變數值,也可使用指向物件的其他方法與變數,但因為是共用同個物件實體,要留意資料連動產生的變化。
例如myPen和yourPen是兩個參考變數,原本指向不同的物件。但若進行 myPen = yourPen 操作,myPen 就會指向 yourPen 所指的那個物件,這時兩者的記憶體位址會是一樣,而原本的 yourPen 物件,若沒有其他變數再被使用,那麼該物件就會被視為「垃圾」,Java會清理此類無用物件。