隨筆-4  評論-2  文章-0  trackbacks-0
          最近在做項目時碰到關于java值傳遞和引用傳遞的問題,查不了少文章,做了幾個例子才搞明白,當然我總結出來的不一定是對的,歡迎大家來拍磚。主要有以下兩條:
          1.如果是基本類型,那么傳遞進去的就是值傳遞。
          2.如果不是基本類型,那么傳遞進去的就是對象引用的拷貝。

          以下是例子:
          public class Test {

              private String name;

              public String getName() {
                  return name;
              }

              public void setName(String name) {
                  this.name = name;
              }
          }

          public class Test1 {    
              private static Test staticTest;
              
              public static void main(String[] args) {
                  Test t1 = new Test();
                  call(t1);
                  System.out.println(t1.getName());
              }
              
              public static void call(Test rt) {
                  staticTest = new Test();
                  staticTest.setName("abc");
                  rt.setName("cba");
                  rt = staticTest;
              }
          }
          此時的運行結果是什么?機器給出的結果是“cba”,為什么會這樣,我理解如下:
          rt.setName("cba");
          此時rt是t1的一個復制,但是又不代表t1,但是rt和t1都指向同一個對象,無論通過rt還是t1來都會改變所引用對象的值。
          rt = staticTest;
          這時會把staticTest的引用賦給rt,但是rt只是t1的一個引用, rt此時指向staticTest,但是不會更改t1的值。
          所以會發生以上的結果。不知道正確與否?



          posted on 2008-09-05 14:48 星光 閱讀(253) 評論(2)  編輯  收藏

          評論:
          # re: 關于JAVA中的值傳遞與引用傳遞增 2008-09-05 15:33 |
          很經典的值類型和引用類型的例子,俺贊同你的理解
          java編程思想上說還有一種理解就是不區分什么值類型、引用類型,統統都是值類型,rt也是一個值,只不過這個值是一個指向存放對象隊中的地址

          怎么說都對,呵呵,理解精髓  回復  更多評論
            
          # re: 關于JAVA中的值傳遞與引用傳遞增[未登錄] 2008-09-05 17:18 | 星光
          嗯,我也不知道理解的正確與否,只是希望大家看一下,希望對在這方面有問題的人有所幫助。  回復  更多評論
            

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


          網站導航:
           
          主站蜘蛛池模板: 临江市| 涞水县| 锡林浩特市| 铁力市| 宜兰市| 虞城县| 布尔津县| 开化县| 德州市| 毕节市| 新龙县| 石首市| 霍邱县| 寿宁县| 铁岭县| 宁晋县| 凤庆县| 庆云县| 克什克腾旗| 汾西县| 屏山县| 茶陵县| 永和县| 揭阳市| 甘孜| 闽侯县| 华亭县| 凤台县| 毕节市| 朔州市| 湖北省| 尼木县| 晋城| 建德市| 阳新县| 万源市| 陇川县| 都江堰市| 榆林市| 修文县| 贵南县|