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

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

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

    posts - 55,comments - 89,trackbacks - 0
    值傳遞:方法調(diào)用時(shí),實(shí)際參數(shù)把它的值傳遞給對(duì)應(yīng)的形式參數(shù),方法執(zhí)行中形式參數(shù)值的改變不影響實(shí)際參 數(shù)的值。
    引用傳遞:也稱為傳地址。方法調(diào)用時(shí),實(shí)際參數(shù)的引用(地址,而不是參數(shù)的值)被傳遞給方法中相對(duì)應(yīng)的形式參數(shù),在方法執(zhí)行中,對(duì)形式參數(shù)的操作實(shí)際上就是對(duì)實(shí)際參數(shù)的操作,方法執(zhí)行中形式參數(shù)值的改變將會(huì)影響實(shí)際參數(shù)的值。
    下面舉例說明:
    傳值---傳遞基本數(shù)據(jù)類型參數(shù)
    public    class           PassValue{
        static void exchange(int a, int b){//靜態(tài)方法,交換a,b的值
            int temp;
            temp = a;
            a = b;
            b = temp;
        }
        public static void main(String[] args){
           int i = 10;
           int j = 100;
           System.out.println("before call: " + "i=" + i + "\t" + "j = " + j);//調(diào)用前
            exchange(i, j);                                                                    //值傳遞,main方法只能調(diào)用靜態(tài)方法
            System.out.println("after call: " + "i=" + i + "\t" + "j = " + j);//調(diào)用后
        }
    }
    運(yùn)行結(jié)果:
            before call: i = 10        j = 100
            after    call: i = 10        j = 100
    說明:調(diào)用exchange(i, j)時(shí),實(shí)際參數(shù)i,j分別把值傳遞給相應(yīng)的形式參數(shù)a,b,在執(zhí)行方法exchange()時(shí),形式參數(shù)a,b的值的改變不影響實(shí)際參數(shù)i和j的值,i和j的值在調(diào)用前后并沒改變。
    引用傳遞---對(duì)象作為參數(shù)
    如果在方法中把對(duì)象(或數(shù)組)作為參數(shù),方法調(diào)用時(shí),參數(shù)傳遞的是對(duì)象的引用(地址),即在方法調(diào)用時(shí),實(shí)際參數(shù)把對(duì)對(duì)象的引用(地址)傳遞給形式參數(shù)。這是實(shí)際參數(shù)與形式參數(shù)指向同一個(gè)地址,即同一個(gè)對(duì)象(數(shù)組),方法執(zhí)行時(shí),對(duì)形式參數(shù)的改變實(shí)際上就是對(duì)實(shí)際參數(shù)的改變,這個(gè)結(jié)果在調(diào)用結(jié)束后被保留了下來。
    class Book{
        String name;
        private folat price;
        Book(String n,    float ){                //構(gòu)造方法
            name = n;
            price = p;
        }
        static  void  change(Book a_book,    String n,    float p){    //靜態(tài)方法,對(duì)象作為參數(shù)
                a_book.name = n;
                a_book.price = p;
        }
        public void output(){        //實(shí)例方法,輸出對(duì)象信息
            System.out.println("name: " + name + "\t" + "price: " + price);
        }
    }
     public class PassAddr{
        public static void main(String [] args){
            Book b = new Book("java2",    32.5f);
            System.out.print("before call:\t");        //調(diào)用前
            b.output();
            b.change(b,    "c++",    45.5f);            //引用傳遞,傳遞對(duì)象b的引用,修改對(duì)象b的值
            System.out.print("after call:\t");            //調(diào)用后
            b.output();
        }
    }
    運(yùn)行結(jié)果:
            before    call:    name:java2        price:32.5
            after       call:    name:c++          price:45.5
    說明:調(diào)用change(b,"c++",45.5f)時(shí),對(duì)象b作為實(shí)際參數(shù),把引用傳遞給相應(yīng)的形式參數(shù)a_book,實(shí)際上a_book也指向同一個(gè)對(duì)象,即該對(duì)象有兩個(gè)引用名:b和a_book。在執(zhí)行方法change()時(shí),對(duì)形式參數(shù)a_book操作就是對(duì)實(shí)際參數(shù)b的操作。

    posted on 2007-10-23 22:23 jiafang83 閱讀(90448) 評(píng)論(55)  編輯  收藏

    FeedBack:
    # re: java中的值傳遞和引用傳遞
    2007-10-24 10:43 | 翔南
    呵呵 鞏固了下java的基礎(chǔ)! 8錯(cuò)  回復(fù)  更多評(píng)論
      
    # re: java中的值傳遞和引用傳遞[未登錄]
    2007-10-25 09:34 | Tom
    運(yùn)行結(jié)果:
    before call: name:java2 price:32.5
    after call: name:c++ price:45.5
    那price是基本類型啊,怎么它的值也改變了呢?  回復(fù)  更多評(píng)論
      
    # re: java中的值傳遞和引用傳遞[未登錄]
    2007-10-25 11:45 | jiafang83
    @Tom
    price是對(duì)象a_book的一個(gè)屬性,這跟直接操作基本類型不一樣,中間還隔了一層,通過對(duì)象操作基本類型。
    我是新手,請(qǐng)多關(guān)照!  回復(fù)  更多評(píng)論
      
    # re: java中的值傳遞和引用傳遞
    2007-10-27 16:25 | 新青年
    不錯(cuò),我對(duì)Java的引用傳遞,一直都想了解,今天終于找到了!  回復(fù)  更多評(píng)論
      
    # re: java中的值傳遞和引用傳遞[未登錄]
    2008-05-25 21:06 | no
    簡(jiǎn)單的錯(cuò)誤。
    你的老師不合格!  回復(fù)  更多評(píng)論
      
    # re: java中的值傳遞和引用傳遞
    2008-07-22 19:15 | hansen
    但是 如果對(duì)象是 Integer 類型,也不能傳址 ,值還是不變的   回復(fù)  更多評(píng)論
      
    # re: java中的值傳遞和引用傳遞[未登錄]
    2008-08-18 17:07 | june
    今天老師講了這個(gè)問題,我聽的不是很明白,謝謝你了!  回復(fù)  更多評(píng)論
      
    # re: java中的值傳遞和引用傳遞
    2008-08-20 19:50 | jarmine

    傳遞對(duì)象都是傳引用!!!

      回復(fù)  更多評(píng)論
      
    # re: java中的值傳遞和引用傳遞
    2008-10-02 16:31 | javc
    還可以理解  回復(fù)  更多評(píng)論
      
    # re: java中的值傳遞和引用傳遞[未登錄]
    2008-11-14 00:33 | HelloWorld
    完全錯(cuò)誤!
    首先:java中絕對(duì)沒有引用傳遞!

    如果是引用傳遞,最好的反例就是對(duì)String的修改

    在java中貌似引用傳遞,實(shí)際傳遞的是addressValue  回復(fù)  更多評(píng)論
      
    # re: java中的值傳遞和引用傳遞[未登錄]
    2008-12-25 17:23 | 啊啊
    好像不是一回事,下面的是成員函數(shù)  回復(fù)  更多評(píng)論
      
    # re: java中的值傳遞和引用傳遞
    2009-01-19 07:55 | JJ
    沒錯(cuò)啊,傳遞的是Book對(duì)象啊,也就是說,在change里調(diào)用的a_book.name和a_book.price實(shí)際是b的屬性,對(duì)a_book的屬性修改,就是對(duì)b屬性的修改,這個(gè)不是引用傳遞是什么,由于JAVA中沒有指針的概念,所謂引用的傳遞就是將a_book和b指向同一地址,盡管好像是地址的傳遞,但是JAVA中沒有指針,所以不能說地址傳遞,而是引用傳遞。  回復(fù)  更多評(píng)論
      
    # re: java中的值傳遞和引用傳遞
    2009-06-18 23:17 | string
    @HelloWorld
    String是傳引用,只是由于String里面的數(shù)據(jù)不能改, 所以看起來像傳值(因?yàn)橐坏└牧司妥兂闪硗庖粋€(gè)String了)。  回復(fù)  更多評(píng)論
      
    # re: java中的值傳遞和引用傳遞
    2009-06-18 23:18 | string
    一般基礎(chǔ)類型是傳遞的值, 其他的對(duì)象傳遞的是引用。

    String是傳引用,只是由于String里面的數(shù)據(jù)不能改,所以看起來像傳值(因?yàn)橐坏└牧司妥兂闪硗庖粋€(gè)String了)。  回復(fù)  更多評(píng)論
      
    # re: java中的值傳遞和引用傳遞
    2009-07-17 16:12 | xiaots
    java 只有值傳遞,沒有引用....你們教材上是錯(cuò)的!老師估計(jì)也教錯(cuò)了!  回復(fù)  更多評(píng)論
      
    # re: java中的值傳遞和引用傳遞
    2009-11-10 14:31 | dyj
    @xiaots
    同意
      回復(fù)  更多評(píng)論
      
    # re: java中的值傳遞和引用傳遞
    2010-05-02 17:18 | liizii
    @xiaots
    agree  回復(fù)  更多評(píng)論
      
    # re: java中的值傳遞和引用傳遞
    2010-06-14 09:26 | 草原蒼狼
    你還得考慮你傳遞的對(duì)象是你自己創(chuàng)建的還是 java 的類庫(kù)  回復(fù)  更多評(píng)論
      
    # re: java中的值傳遞和引用傳遞
    2010-06-21 11:03 | ne_akari
    又是一個(gè)排在搜索結(jié)果前面的害人帖子。
    值傳遞和引用傳遞的定義就是錯(cuò)誤的,得出的結(jié)果也只能是謬誤了。
    望作者詳查。
      回復(fù)  更多評(píng)論
      
    # re: java中的值傳遞和引用傳遞[未登錄]
    2010-12-01 11:18 | 小小
    挺好,呵呵,謝謝啦  回復(fù)  更多評(píng)論
      
    # re: java中的值傳遞和引用傳遞
    2011-03-25 14:57 | zhaoxiang
    樓主謬論啊啊啊啊啊啊啊啊  回復(fù)  更多評(píng)論
      
    # re: java中的值傳遞和引用傳遞[未登錄]
    2011-04-03 15:43 | ran
    java 中根本沒有引用傳遞。  回復(fù)  更多評(píng)論
      
    # re: java中的值傳遞和引用傳遞
    2011-04-27 22:25 | 肖波
    嗯,這位兄弟是正確的!@HelloWorld
      回復(fù)  更多評(píng)論
      
    # re: java中的值傳遞和引用傳遞
    2011-08-31 22:02 | malson
    對(duì)的@string  回復(fù)  更多評(píng)論
      
    # re: java中的值傳遞和引用傳遞[未登錄]
    2011-09-02 17:23 | cc
    誤人子弟  回復(fù)  更多評(píng)論
      
    # re: java中的值傳遞和引用傳遞
    2011-09-27 08:41 | aimei
    @翔南
      回復(fù)  更多評(píng)論
      
    # re: java中的值傳遞和引用傳遞
    2011-09-27 08:42 | aimei
    與值傳遞、址傳遞有關(guān)的內(nèi)容  回復(fù)  更多評(píng)論
      
    # re: java中的值傳遞和引用傳遞
    2011-09-27 08:45 | aimei
    值傳遞與址遞是c語(yǔ)言中所要運(yùn)用到得。但同時(shí)java語(yǔ)言也會(huì)運(yùn)用到值傳遞  回復(fù)  更多評(píng)論
      
    # re: java中的值傳遞和引用傳遞
    2012-04-18 22:27 | tangliang
    @HelloWorld
    因?yàn)镾tring類型比較特殊,是不可變字符串,所以,能你在調(diào)用修改方法時(shí),調(diào)用那個(gè)方法的字符串把引用地址給了方法的形參,再修改的時(shí)候,實(shí)際上是通過形參修改的,由于修改原來字符串值時(shí),產(chǎn)生了一個(gè)新的字符串,所以形參又指向了那個(gè)修字符串。而調(diào)用方法的那個(gè)字符串還是指向原來的那個(gè)字符串,所以,即使調(diào)用了修改方法,但是他指向的那個(gè)字符串還是沒改變。  回復(fù)  更多評(píng)論
      
    # re: java中的值傳遞和引用傳遞
    2012-04-18 22:36 | tangliang
    其實(shí)只是值類型和引用類型作為參數(shù),都是把這個(gè)變量的值復(fù)制給了方法的形參。只不過,值類型變量里面保存的是值,而引用變量里保存的是一個(gè)對(duì)象的地址。由于值類型和引用變量的這種存儲(chǔ)方式的不同,才導(dǎo)致通過方法修改后得到的結(jié)果不同而已。并沒有什么值傳遞和引用傳遞。  回復(fù)  更多評(píng)論
      
    # re: java中的值傳遞和引用傳遞[未登錄]
    2012-05-29 23:20 | xx
    誤人子弟?。。。。?nbsp; 回復(fù)  更多評(píng)論
      
    # re: java中的值傳遞和引用傳遞[未登錄]
    2012-08-01 14:08 | 阿布
    @xx
    請(qǐng)你舉例子說明下,謝謝!  回復(fù)  更多評(píng)論
      
    # re: java中的值傳遞和引用傳遞[未登錄]
    2012-08-22 15:52 | zz
    @xiaots
    sun 公司也錯(cuò)了  回復(fù)  更多評(píng)論
      
    # re: java中的值傳遞和引用傳遞
    2012-09-26 15:33 | 反對(duì)法
    @HelloWorld
    說的好,java中只有值傳遞,,包括對(duì)象  回復(fù)  更多評(píng)論
      
    # re: java中的值傳遞和引用傳遞
    2013-03-19 21:29 | Anna@java
    博主:
    public class PassAddr{
    public static void main(String [] args){
    Book b = new Book("java2", 32.5f);
    System.out.print("before call:\t"); //調(diào)用前
    b.output();
    b.change(b, "c++", 45.5f); //引用傳遞,傳遞對(duì)象b的引用,修改對(duì)象b的值
    System.out.print("after call:\t"); //調(diào)用后
    b.output();
    }
    }
    這一塊代碼并不能說明你上述的引用傳遞和值傳遞的區(qū)別,并不是引用傳遞傳的是對(duì)象這一說!你這里使用了Book類的實(shí)例b調(diào)用了Book類里面的change方法,就相當(dāng)于你使用了setter方法給屬性賦值一樣,當(dāng)前類操作當(dāng)前屬性,改變當(dāng)前類的屬性值這是很正常的,證明不了你的(傳對(duì)象和基礎(chǔ)類型論)
    public class A{
    private int number=0;
    public void change(int newValue){
    this.number = newValue;
    }
    public void printNumber(){
    System.out.print(this.number);
    }
    }
    public class Test{
    public static void main(String args[]){
    A a = new A();
    a.printNumber();//傳遞前
    a.change(100);//值傳遞??引用傳遞??
    a.printNumber();//傳遞后
    }
    }
    看看這里,這里是值傳遞還是引用傳遞?改變了對(duì)象的引用,叫引用傳遞嗎?傳遞了基礎(chǔ)類型int值,叫值傳遞嗎?  回復(fù)  更多評(píng)論
      
    # re: java中的值傳遞和引用傳遞
    2013-05-14 11:15 | 小蔡
    很明顯上面的例子有問題  回復(fù)  更多評(píng)論
      
    # re: java中的值傳遞和引用傳遞[未登錄]
    2013-08-14 09:30 | 啦啦啦
    @HelloWorld
    String不是final類型么?怎么修改?  回復(fù)  更多評(píng)論
      
    # re: java中的值傳遞和引用傳遞
    2013-08-21 20:30 | 游客
    @HelloWorld
    對(duì)說得好!哈哈...java中根本就沒有傳遞引用這一說!
    希望樓主不要讓更多的人出錯(cuò)啦  回復(fù)  更多評(píng)論
      
    # re: java中的值傳遞和引用傳遞[未登錄]
    2013-08-31 22:04 | aa
    能不能搞個(gè)正確的呀  回復(fù)  更多評(píng)論
      
    # re: java中的值傳遞和引用傳遞[未登錄]
    2013-09-04 10:28 | 1
    # re: java中的值傳遞和引用傳遞[未登錄]
    2013-09-08 19:00 | Herry
    Java只有值傳遞!  回復(fù)  更多評(píng)論
      
    # re: java中的值傳遞和引用傳遞
    2013-09-29 22:22 | Leonidas
    看到了這個(gè),我不得不說下。。
    JAVA沒有引用傳遞。。
    JAVA的所有傳遞。。都是值傳遞?。。。。?!

    傳遞對(duì)象,傳遞的是這個(gè)對(duì)象在內(nèi)存中的地址,這個(gè)地址是字符,這個(gè)字符是值!??!

    這就是和C中的指針傳遞的引用的根本區(qū)別。。。。。  回復(fù)  更多評(píng)論
      
    # re: java中的值傳遞和引用傳遞
    2013-10-06 16:33 | Yannis
    @HelloWorld

    正解?。。。?!  回復(fù)  更多評(píng)論
      
    # re: java中的值傳遞和引用傳遞[未登錄]
    2013-12-09 13:45 | xx
    浮點(diǎn)型,在實(shí)際參數(shù)里面把值改了@Tom
      回復(fù)  更多評(píng)論
      
    # re: java中的值傳遞和引用傳遞
    2014-01-22 15:42 | likun
    跨越了6年的討論,在第七年的今天,我想樓主應(yīng)該已經(jīng)知道正確答案是什么了,樓主快回歸本帖公布答案~~~個(gè)人一直的觀點(diǎn)就是,java只有值傳遞,至于怎么傳的、如何證明就不得而知了。。。  回復(fù)  更多評(píng)論
      
    # re: java中的值傳遞和引用傳遞
    2014-05-20 14:29 | thooo
    java只有值傳遞。既然只是傳值,那么在JAVA的方法調(diào)用中,形參永遠(yuǎn)不可以改變實(shí)參的地址,但是卻可以改變實(shí)參的值(也可以說是內(nèi)容)。  回復(fù)  更多評(píng)論
      
    # re: java中的值傳遞和引用傳遞[未登錄]
    2014-08-12 11:57 | 123
    樓主絕對(duì)是謬論  回復(fù)  更多評(píng)論
      
    # re: java中的值傳遞和引用傳遞
    2014-09-04 11:03 | somewhereyu
    你們不看java核心技術(shù)嗎?第九版 121頁(yè)。

    先不管引用的概念是什么,至少官方是這么講的。

    call by reference 表示方法接收的是調(diào)用者提供的變量地址。。。  回復(fù)  更多評(píng)論
      
    # re: java中的值傳遞和引用傳遞
    2014-09-04 11:06 | somewhereyu
    錯(cuò)了,還真是值傳遞。汗啊。。。  回復(fù)  更多評(píng)論
      
    # re: java中的值傳遞和引用傳遞
    2014-09-04 11:07 | somewhereyu
    @somewhereyu 汗自己一下。
      回復(fù)  更多評(píng)論
      
    # re: java中的值傳遞和引用傳遞[未登錄]
    2015-03-13 14:04 | 呵呵
    @somewhereyu
    第八年了,結(jié)論出來了嗎  回復(fù)  更多評(píng)論
      
    # re: java中的值傳遞和引用傳遞[未登錄]
    2015-04-10 18:23 | 蝸牛
    求后續(xù)真相  回復(fù)  更多評(píng)論
      
    # re: java中的值傳遞和引用傳遞[未登錄]
    2015-08-15 15:20 | ws
    .........。。這個(gè)錯(cuò)誤結(jié)論排在搜索結(jié)果第一位啊,誤導(dǎo)了多少不愛看評(píng)論的童鞋啊  回復(fù)  更多評(píng)論
      
    # re: java中的值傳遞和引用傳遞
    2015-12-03 22:37 | 于峰
    我其實(shí)不明白時(shí)具體說的是什么,但是我能感覺到,這樣的輸出是對(duì)的,我覺得還是需要經(jīng)常的練習(xí),練出感覺來,多我就習(xí)慣了;  回復(fù)  更多評(píng)論
      
    # re: java中的值傳遞和引用傳遞
    2016-01-18 01:04 | 朱凱
    @string
    同意  回復(fù)  更多評(píng)論
      

    只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


    網(wǎng)站導(dǎo)航:
     
    主站蜘蛛池模板: 国产禁女女网站免费看| 永久久久免费浮力影院| 亚洲一级片在线观看| 女人被免费视频网站| a毛片视频免费观看影院| 亚洲va中文字幕无码久久| 免费观看美女用震蛋喷水的视频 | 成人免费看黄20分钟| 中国人免费观看高清在线观看二区| 亚洲avav天堂av在线网爱情| 亚洲精品免费在线| 一本久到久久亚洲综合| 久久久久成人片免费观看蜜芽| 亚洲精品乱码久久久久蜜桃| 久久综合日韩亚洲精品色| 亚洲国产AV无码专区亚洲AV| 国产精品免费视频一区| 国产大片91精品免费观看男同| 国产一级做a爱免费视频| 亚洲毛片在线免费观看| 美女网站在线观看视频免费的| 亚洲国产成人久久精品大牛影视| 亚洲精品乱码久久久久久V| 亚洲国产成人久久精品大牛影视 | 久久亚洲精品成人AV| 亚洲A丁香五香天堂网| 成人免费无遮挡无码黄漫视频| 成年女人免费视频播放77777 | 99久久精品国产免费| 91视频免费观看高清观看完整| 中国一级毛片免费看视频| 久草免费手机视频| 成人爽a毛片免费| 一级黄色毛片免费看| 亚洲中文字幕一区精品自拍| 亚洲精品免费在线观看| 亚洲AV无码一区二区二三区入口| 亚洲韩国—中文字幕| 亚洲国产成人精品无码区在线秒播| 国产91久久久久久久免费| 久久精品无码专区免费东京热|