Java 值傳遞 or 引用傳遞裸燎?

先說結(jié)論

java中方法參數(shù)傳遞方式是按值傳遞顾瞻。
如果參數(shù)是基本類型,傳遞的是基本類型的字面量值的拷貝德绿。
如果參數(shù)是引用類型荷荤,傳遞的是該參量所引用的對象在堆中地址值的拷貝。

再來舉例說明

基本類型作為參數(shù)傳遞

public static void main(String[] args) {
    //基本類型作為參數(shù)傳遞
    int num = 2;
    System.out.println("before change , num = " + num);
    changeData(num);
    System.out.println("after change , num = " + num);
}
public static void changeData(int num) {
    num = 10;
}

輸出結(jié)果為

before change , num = 2
after change , num = 2

通過這個例子移稳,說明基本數(shù)據(jù)類型作為參數(shù)傳遞時蕴纳,傳遞的是值得拷貝,無論怎么改變這個拷貝个粱,原值是不會改變的古毛。

對象作為參數(shù)傳遞

public static void main(String[] args) {    
    //對象作為參數(shù)傳遞
    A a = new A("hello");
    System.out.println("before change , a.str = " + a.str);
    changeData(a);
    System.out.println("after change , a.str = " + a.str);
}

public static void changeData(A a) {
    a.str = "hi";
}

class A {
    public String str;
    public A(String str) {
        this.str = str;
    }
}

輸出結(jié)果為

before change , a.str = hello
after change , a.str = hi

從結(jié)果來看,對象a被改變了,那么是不是調(diào)用changeData方法時稻薇,傳入的就是a對象本身呢嫂冻?
答案是否定的。
下面我們進(jìn)行分析塞椎,程序從main方法開始執(zhí)行桨仿,首先創(chuàng)建了一個A對象,并定義了一個a引用變量來指向A對象案狠。


main方法中創(chuàng)建A對象后的存儲示意圖

接下來服傍,調(diào)用changeData方法,a變量作為實(shí)參傳入changeData方法骂铁,賦值給changeData方法里的形參吹零,從而完成changeData方法的a形參的初始化。

a傳入changeData方法后的存儲示意圖

從上圖可以看出拉庵,這種參數(shù)傳遞方式也是值傳遞瘪校,將main方法中a的副本傳入changeData方法,a是一個引用變量名段,所以并未復(fù)制A對象阱扬。
那么,當(dāng)執(zhí)行changeData方法時伸辟,由于a只是一個引用變量麻惶,所以實(shí)際操作的還是堆內(nèi)存中的A對象。因此信夫,不管是操作main中的a窃蹋,還是操作changeData方法中的a,實(shí)際操作的都是堆內(nèi)存中的A對象静稻,是同一個對象警没。
所以,當(dāng)changeData方法中改變了a變量引用的A對象的str值后振湾,main方法中a變量所引用的A對象的str值也被改變了杀迹。


TODO

下面程序的輸出結(jié)果是什么?

public class JavaDemo {

    public static void main(String[] args) {
        
        String str = new String("ada");
        char[] ch = { 'a', 'b', 'c' };

        change(str,ch);

        System.out.print(str +" and ");
        System.out.print(ch);
    }


    public static void change(String str, char ch[]) {
        str = "ada 111";
        ch[0] = 'd';
    }
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末押搪,一起剝皮案震驚了整個濱河市树酪,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌大州,老刑警劉巖续语,帶你破解...
    沈念sama閱讀 222,590評論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異厦画,居然都是意外死亡疮茄,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,157評論 3 399
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來力试,“玉大人焚虱,你說我怎么就攤上這事《妫” “怎么了?”我有些...
    開封第一講書人閱讀 169,301評論 0 362
  • 文/不壞的土叔 我叫張陵躏率,是天一觀的道長躯畴。 經(jīng)常有香客問我,道長薇芝,這世上最難降的妖魔是什么蓬抄? 我笑而不...
    開封第一講書人閱讀 60,078評論 1 300
  • 正文 為了忘掉前任,我火速辦了婚禮夯到,結(jié)果婚禮上嚷缭,老公的妹妹穿的比我還像新娘。我一直安慰自己耍贾,他們只是感情好阅爽,可當(dāng)我...
    茶點(diǎn)故事閱讀 69,082評論 6 398
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著荐开,像睡著了一般付翁。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上晃听,一...
    開封第一講書人閱讀 52,682評論 1 312
  • 那天百侧,我揣著相機(jī)與錄音,去河邊找鬼能扒。 笑死佣渴,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的初斑。 我是一名探鬼主播辛润,決...
    沈念sama閱讀 41,155評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼见秤!你這毒婦竟也來了频蛔?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 40,098評論 0 277
  • 序言:老撾萬榮一對情侶失蹤秦叛,失蹤者是張志新(化名)和其女友劉穎晦溪,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體挣跋,經(jīng)...
    沈念sama閱讀 46,638評論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡三圆,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,701評論 3 342
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片舟肉。...
    茶點(diǎn)故事閱讀 40,852評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡修噪,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出路媚,到底是詐尸還是另有隱情黄琼,我是刑警寧澤,帶...
    沈念sama閱讀 36,520評論 5 351
  • 正文 年R本政府宣布整慎,位于F島的核電站脏款,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏裤园。R本人自食惡果不足惜撤师,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,181評論 3 335
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望拧揽。 院中可真熱鬧剃盾,春花似錦、人聲如沸淤袜。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,674評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽铡羡。三九已至闰歪,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間蓖墅,已是汗流浹背库倘。 一陣腳步聲響...
    開封第一講書人閱讀 33,788評論 1 274
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留论矾,地道東北人教翩。 一個月前我還...
    沈念sama閱讀 49,279評論 3 379
  • 正文 我出身青樓,卻偏偏與公主長得像贪壳,于是被迫代替她去往敵國和親饱亿。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,851評論 2 361

推薦閱讀更多精彩內(nèi)容

  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語法闰靴,類相關(guān)的語法彪笼,內(nèi)部類的語法,繼承相關(guān)的語法蚂且,異常的語法配猫,線程的語...
    子非魚_t_閱讀 31,665評論 18 399
  • 前言 把《C++ Primer》[https://book.douban.com/subject/25708312...
    尤汐Yogy閱讀 9,523評論 1 51
  • *面試心聲:其實(shí)這些題本人都沒怎么背,但是在上海 兩周半 面了大約10家 收到差不多3個offer,總結(jié)起來就是把...
    Dove_iOS閱讀 27,166評論 30 470
  • 舍得的本質(zhì)所在——平衡。 易經(jīng)上言:陰陽和則生;陰陽離則滅;陰陽平則佳杏死。把握陰陽泵肄,統(tǒng)御整體捆交。萬物因平衡而在,因打破...
    小吳橋閱讀 999評論 2 5
  • 先普及一下插件的安裝方法: 1.Android studio File->Settings..->Plugins–...
    黃海佳閱讀 515評論 0 1