java中按值傳遞和引用傳遞區別

java中在參數傳遞時有2種方式,java

        一種是按值傳遞:值傳遞是指在調用函數時將實際參數複製一份傳遞到函數中,這樣在函數中若是對參數進行修改,將不會影響到實際參數。簡單來講就是直接複製了一份數據過去,由於是直接複製,因此這種方式在傳遞時若是數據量很是大的話,運行效率天然就變低了,因此java在傳遞數據量很小的數據是值傳遞,好比java中的各類基本類型:int,float,double,boolean等類型的,具體能夠本身測試。
代碼:數組

 

結果:函數

 

      另一種是按引用傳遞:引用傳遞其實就彌補了上面說的不足,若是每次傳參數的時候都複製一份的話,若是這個參數佔用的內存空間太大的話,運行效率會很底下,因此引用傳遞就是直接把內存地址傳過去,也就是說引用傳遞時,操做的其實都是源數據,這樣的話修改有時候會衝突,記得用邏輯彌補下就行了,具體的數據類型就比較多了,好比Object,二維數組,List,Map等除了基本類型的參數都是引用傳遞。測試

代碼:遊戲

結果:內存

有些文章中寫的是java中全部的傳參方式都是按值傳遞,這也說得通,無非就是文字遊戲,由於不管是按值傳遞仍是按引用傳遞都是把值傳遞過去了,因此就叫按值傳遞。效率

相關文章
相關標籤/搜索