值傳遞是指基本數據類型在方法中的傳遞,引用傳遞是指引用數據類型在方法中的傳遞。
舉例來說,如下圖程序代碼運行所示: (推薦學習:web前端視頻教程)
注:int屬于基本數據類型,因此在方法中進行傳遞和引用時,并不會改變該變量的數值
而arr屬于數組,是引用數據類型,因此在方法引用時,實際傳遞的是該數組在堆內存中的物理內存地址,在方法中對該數組進行操作,則會影響到該數組內部的數值,會發生改變
原因:
在java中,基本數據類型作為參數傳遞的時候叫做值傳遞,傳的是值本身,
值傳遞:值在該方法中改變屬于局部變量改變
當出了該方法就沒有作用了(方法中的傳遞的基本數據類型就屬于局部變量)
在java中,方法的傳參,引用數據類型,傳的是物理內存地址值,當方法中對數組內部的數值進行改變時,并未改變該數組的物理內存地址,所以當返回到主方法中,數組還是指向原來的地址。
當傳入arr數組在內存中的地址值后,堆內存中的連續地址發生改變,可以影響數組整體
特例:String /基本數據類型包裝類,雖然都是引用數據類型,但是在發生傳參的時候,它們傳的是值