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

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

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

    傳遞對象都是傳引用!!!

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

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

    在java中貌似引用傳遞,實際傳遞的是addressValue  回復  更多評論
      
    # re: java中的值傳遞和引用傳遞[未登錄]
    2008-12-25 17:23 | 啊啊
    好像不是一回事,下面的是成員函數  回復  更多評論
      
    # re: java中的值傳遞和引用傳遞
    2009-01-19 07:55 | JJ
    沒錯啊,傳遞的是Book對象啊,也就是說,在change里調用的a_book.name和a_book.price實際是b的屬性,對a_book的屬性修改,就是對b屬性的修改,這個不是引用傳遞是什么,由于JAVA中沒有指針的概念,所謂引用的傳遞就是將a_book和b指向同一地址,盡管好像是地址的傳遞,但是JAVA中沒有指針,所以不能說地址傳遞,而是引用傳遞。  回復  更多評論
      
    # re: java中的值傳遞和引用傳遞
    2009-06-18 23:17 | string
    @HelloWorld
    String是傳引用,只是由于String里面的數據不能改, 所以看起來像傳值(因為一旦改了就變成另外一個String了)。  回復  更多評論
      
    # re: java中的值傳遞和引用傳遞
    2009-06-18 23:18 | string
    一般基礎類型是傳遞的值, 其他的對象傳遞的是引用。

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

    傳遞對象,傳遞的是這個對象在內存中的地址,這個地址是字符,這個字符是值!!!

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

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

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

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

    只有注冊用戶登錄后才能發表評論。


    網站導航:
    博客園   IT新聞   Chat2DB   C++博客   博問  
     
    主站蜘蛛池模板: 国产一级a毛一级a看免费人娇| 亚洲黑人嫩小videos| 在线观看国产情趣免费视频| 在线免费观看国产视频| 一区二区亚洲精品精华液| 白白色免费在线视频| 一区二区三区免费在线视频 | 女人18毛片水真多免费看| 免费看国产曰批40分钟| 亚洲av无码成人黄网站在线观看| 亚洲精品永久www忘忧草| 麻豆安全免费网址入口| 亚洲人成在线免费观看| 四虎永久成人免费| 色www免费视频| 亚洲人JIZZ日本人| 亚洲AV无码久久久久网站蜜桃| 深夜a级毛片免费视频| 国产成人无码免费看视频软件| 免费A级毛片无码A| 国产亚洲精品成人AA片| 日本免费高清视频| 免费一级肉体全黄毛片| 日韩在线视频播放免费视频完整版| 亚洲国产综合精品中文字幕 | 亚洲AV无码成人专区| 成人毛片免费视频| 亚洲一区二区电影| 一级视频免费观看| 日本免费网址大全在线观看| 亚洲精品综合一二三区在线| a级毛片免费观看视频| 免费在线观看理论片| a色毛片免费视频| 亚洲国产精品一区二区久| 99精品视频在线观看免费专区| 亚洲伊人成无码综合网| 特级毛片aaaa级毛片免费| 久久久影院亚洲精品| 鲁丝片一区二区三区免费| 亚洲无人区午夜福利码高清完整版|