<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    302班

    java突擊隊
    posts - 151, comments - 74, trackbacks - 0, articles - 14
      BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

    Java中參數的傳遞

    Posted on 2007-04-26 15:52 停留的風 閱讀(571) 評論(1)  編輯  收藏 所屬分類: Java程序集合

    總的來說,計算機語言給子程序傳遞參數的方法有兩種。第一種方法是按值傳遞(call-by-value )。這種方法將一個參數值(value )復制成為子程序的正式參數。這樣,對子程序的參數的改變不影響調用它的參數。第二種傳遞參數的方法是引用調用(call-by-reference )。在這種方法中,參數的引用(而不是參數值)被傳遞給子程序參數。在子程序中,該引用用來訪問調用中指定的實際參數。這樣,對子程序參數的改變將會影響調用子程序的參數。你將看到,根據傳遞的對象不同,Java 將使用這兩種不同的方法。

    在Java 中,當你給方法傳遞一個簡單類型時,它是按值傳遞的。因此,接收參數的子程序參數的改變不會影響到該方法之外。例如,看下面的程序:

    // Simple types are passed by value.
    class Test {

    void meth(int i,int j) { i *= 2;j /= 2;

    }
    }
    class CallByValue {

    public static void main(String args[]) {
    Test ob = new Test();

    int a = 15,b = 20;

    System.out.println("a and b before call: " +
    a + " " + b);

    ob.meth(a,b);

    System.out.println("a and b after call: " +
    a + " " + b);
    }
    }

    該程序的輸出如下所示:

    a and b before call: 15 20
    a and b after call: 15 20

    可以看出,在meth( ) 內部發生的操作不影響調用中a和b的值。它們的值沒在本例中沒有變為30和10。

    當你給方法傳遞一個對象時,這種情形就會發生戲劇性的變化,因為對象是通過引用傳遞的。記住,當你創建一個類類型的變量時,你僅僅創建了一個類的引用。因此,當你將這個引用傳遞給一個方法時,接收它的參數將會指向該參數指向的同一個對象。這有力地證明了對象是通過引用調用傳遞給方法的。該方法中對象的改變確實影響了作為參數的對象。例如,考慮下面的程序:
    // Objects are passed by reference.

    class Test { int a,b;

    Test(int i,int j) {a = i;b = j;

    }
    // pass an object
    void meth(Test o) {

    o.a *= 2;

    o.b /= 2;

    }
    }

    class CallByRef {public static void main(String args[]) { Test ob = new Test(15,20);

    System.out.println("ob.a and ob.b before call: " +
    ob.a + " " + ob.b);

    ob.meth(ob);

    System.out.println("ob.a and ob.b after call: " +
    ob.a + " " + ob.b);
    }
    }

    該程序產生下面的輸出:

    ob.a and ob.b before call: 15 20
    ob.a and ob.b after call: 30 10

    正如你所看到的,在這個例子中,在meth ( ) 中的操作影響了作為參數的對象。

    有趣的一點是,當一個對象引用被傳遞給方法時,引用本身使用按值調用被傳遞。但是,因為被傳遞的值指向一個對象,該值的拷貝仍然指向它相應的參數所指向的同一個對象。

    注意:當一個簡單類型傳遞給一個方法時,使用按值傳遞。對象傳遞則按引用傳遞。


    評論

    # re: Java中參數的傳遞  回復  更多評論   

    2007-10-08 17:08 by 牙牙
    明白了
    主站蜘蛛池模板: 特级精品毛片免费观看| 久久国产乱子伦精品免费强| 亚洲日本VA中文字幕久久道具| 国产精品免费一区二区三区四区 | 亚洲高清无码专区视频| 国产男女爽爽爽免费视频| 国产国产人免费视频成69堂| mm1313亚洲精品无码又大又粗 | 国产亚洲精品美女久久久久 | 久久青草免费91线频观看站街| 亚洲网站在线免费观看| a级毛片毛片免费观看永久| 日韩毛片在线免费观看| WWW国产亚洲精品久久麻豆| 精品久久8x国产免费观看| 色老头永久免费网站| 亚洲精品视频观看| 无码日韩精品一区二区免费暖暖 | 亚洲国产精品综合一区在线| 免费人成再在线观看网站| 亚洲一区二区三区在线播放| 欧美日韩亚洲精品| 久久国产免费直播| 国产免费av一区二区三区| 国产AV旡码专区亚洲AV苍井空| 免费人成又黄又爽的视频在线电影| 热re99久久6国产精品免费| 国产亚洲精品岁国产微拍精品| 亚洲国产精品yw在线观看| 久9热免费精品视频在线观看| 免费人成视频x8x8入口| 亚洲av无码兔费综合| 亚洲日韩中文在线精品第一| 无码国产精品一区二区免费3p | 久久国产一片免费观看| 97久久精品亚洲中文字幕无码| 亚洲AⅤ男人的天堂在线观看 | 国产精品亚洲片在线花蝴蝶| 无码人妻一区二区三区免费手机| 亚洲成a人一区二区三区| 久久爰www免费人成|