方法參數是基本類型時,傳遞的是值。
方法參數是引用類型時,傳遞的是內存地址值
當參數是基本類型時,在調用方法時將值傳遞到方法中,運行方法,運行結束方法退出,對原本main中定義的變量沒有任何操作(方法中沒有return)。即:此時只跟棧有關系,方法執行完之后(方法中沒有return),會彈棧。
當參數是引用類型時,比如:定義數組時,在堆內存中存儲了數組的數據,返回這組數據的地址給了數組名,然后在調用方法時,傳遞的也是這個地址。在方法中,同樣也是根據這個地址找到數組的信息,然后改變了這個數據的,所以之后main方法輸出時,輸出的是改變了之后的數組。即:此時跟棧和堆有關系,棧可以彈棧,堆內存不能彈出。
也就是說 ,當形式參數是基本類型時,方法傳的只是值,實際上main 里的實際參數和外部方法里的形式參數是不同的兩個東西,如果方法不返回值,change里不管怎么改變,與main無關。
而當形式參數是引用類型時,比如:形式參數是數組時,兩個方法通過同一個地址,使用的是同一個堆內存里的數組,是同一個東西,所以外部方法里面改變了這個數組之后,main再調用也是改變之后的數組。