值傳遞是指基本資料型別在方法中的傳遞,引用傳遞是指引用資料型別在方法中的傳遞。
舉例來說,如下圖程序代碼運行所示:(推薦學習:web前端視頻教程)
註:int屬於基本資料型,因此在方法中傳遞與引用時,並不會改變該變數的數值
而arr屬於陣列,是引用資料類型,因此在方法引用時,實際傳遞的是該數組在堆內存中的物理內存地址,在方法中對該數組進行操作,則會影響到該數組內部的數值,會發生變化
原因:
在java中,基本資料型別作為參數傳遞的時候叫做值傳遞,傳的是值本身,
值傳遞:值在這個方法中改變屬於局部變數改變
當出了該方法就沒有作用了(方法中的傳遞的基本資料型別就屬於局部變數)
#在java中,方法的傳參,引用資料類型,傳的是物理記憶體位址值,當方法中對數組內部的數值進行改變時,並未改變該數組的物理記憶體位址,所以當返回到主方法中,陣列還是指向原來的位址。
當傳入arr數組在記憶體中的位址值後,堆記憶體中的連續位址改變,可以影響陣列整體
特例:String /基本資料型別包裝類,雖然都是引用資料型,但是在發生傳參的時候,它們傳的是值
以上是值傳遞和引用傳遞的區別的詳細內容。更多資訊請關注PHP中文網其他相關文章!