Java基礎【二】 - 值傳遞和引用傳遞

什麼是值傳遞

在方法的調用過程當中,實參把它的實際值傳遞給形參,此傳遞過程就是將實參的值複製一份傳遞到函數中,這樣若是在函數中對該值(形參的值)進行了操做將不會影響實參的值。由於是直接複製,因此這種方式在傳遞大量數據時,運行效率會特別低下。函數

什麼是引用傳遞

引用傳遞彌補了值傳遞的不足,若是傳遞的數據量很大,直接復過去的話,會佔用大量的內存空間,而引用傳遞就是將實參的地址複製一份傳遞到函數中。形參和實參的地址相同,指向同一塊內存地址,也就是說操做的其實都是源數據,因此若是在函數中對該值(形參的值)進行了操做將會影響實參的值。(注意:這裏所說的是改變源數據的內容,如:改變的對象的屬性)spa

實例

public static void main(String[] args) {
    int str = 1;    
    char[] ch = {'a', 'b'};
    change(str, ch);
    System.out.println(str);    //輸出:1
    System.out.println(ch);    //輸出:cd
}    
    
public static void change(int str, char[] ch) {        
    str = 2;
    ch[0] = 'c';    //改變數據源內容
}

值傳遞和引用傳遞過程分析圖

  1. 爲對象分配內存空間

圖片描述

  1. 執行 change() 方法。執行前實參(黑色)和形參(紅色)指引。

圖片描述

  1. 執行後

圖片描述

怎麼改變值傳遞的實參

能夠利用反射改變實參的值,後面會寫反射相關的文章。code

若是內容對你有幫助但願點贊收藏謝謝!!!對象

相關文章
相關標籤/搜索