乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      JAVA中方法參數(shù)的引用傳遞

       Levy_X 2017-05-26

      Java中方法參數(shù)的引用傳遞


      java中參數(shù)的傳遞有兩種,分別是按值傳遞和按引用傳遞。按值傳遞不必多說,下面就說一下按引用傳遞。

      當(dāng)一個(gè)對(duì)象被當(dāng)作參數(shù)傳遞到一個(gè)方法,這就是所謂的按引用傳遞。

      public Class  User{    

          private String name;


          public String getName() {

              return name;

          }   

          public void setName(String name) {

              this.name = name;

          }    

      }


      public Class Test {    

          public void set(User user){

              user.setName("hello world");

          }    

          public static void main(String[] args){        

              Test test = new Test();

              User user = new User();

              test.set(user);

              System.out.println(user.getName());

          }

      }

      上面代碼的輸出結(jié)果是“hello world”,這不必多說,那如果將set方法改為如下,結(jié)果會(huì)是多少呢?

      public void set(User user){
              user.setName("hello world");
              user = new User();
              user.setName("change");
          }

      答案依然是“hello world”,下面就讓我們來分析一下如上代碼。

      首先

       User user = new User();

      是在堆中創(chuàng)建了一個(gè)對(duì)象,并在棧中創(chuàng)建了一個(gè)引用,此引用指向該對(duì)象,如下圖:


       test.set(user);

              是將引用user作為參數(shù)傳遞到set方法,注意:這里傳遞的并不是引用本身,而是一個(gè)引用的拷貝。也就是說這時(shí)有兩個(gè)引用(引用和引用的拷貝)同時(shí)指向堆中的對(duì)象,如下圖:



       user.setName("hello world");

      在set()方法中,“user引用的拷貝”操作堆中的User對(duì)象,給name屬性設(shè)置字符串"hello world"。如下圖:


      user=new User();

      在set()方法中,又創(chuàng)建了一個(gè)User對(duì)象,并將“user引用的拷貝”指向這個(gè)在堆中新創(chuàng)建的對(duì)象,如下圖:


       user.setName("change");

      在set()方法中,“user引用的拷貝”操作的是堆中新創(chuàng)建的User對(duì)象。


      set()方法執(zhí)行完畢,目光再回到mian()方法

        System.out.println(user.getName());

             因?yàn)橹埃?user引用的拷貝"已經(jīng)將堆中的User對(duì)象的name屬性設(shè)置為了"hello world",所以當(dāng)main()方法中的user調(diào)用getName()時(shí),打印的結(jié)果就是"hello world"。如下圖:


        本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
        轉(zhuǎn)藏 分享 獻(xiàn)花(0

        0條評(píng)論

        發(fā)表

        請(qǐng)遵守用戶 評(píng)論公約

        類似文章 更多