隨筆 - 40, 文章 - 0, 評論 - 20, 引用 - 0
          數據加載中……

          Java對象操作(自己體會,不一定說的正確,但是都是在程序中測試)

            Java中c中的指針的概念,但是我在使用中還是碰到過一些問題,如我把一個一個對象A賦值給對象B時,這兩個對象有一個改變,那么另外一個也相應的改變。下面分別談談這可能發生問題的幾種情況:

          <一>從“一個對象到另一個對象的賦值”,如:

                  Class  A = new Class();

                 Class  B  = A;

                 這種情況實際把句柄從一個地方復制到另外一個地方,這種情況下對象B和A實際指向的是同一個句柄,更新B會影響到A,同樣更新A也會影響到B。

          <二>把對象作為方法的參數傳遞到一個方法中。Java方法的參數傳遞可以分成兩種:一種是值傳遞,這種一般是簡單的數據類型,如int,long,double,char這些等;一種類似是c中的引用傳遞,就是把對象作為一個引用傳遞給方法參數,在這種情況下,在方法中把這個傳入的參數對象改變,那么相應的傳入這個參數引用的對象也相應的改變。如:

               Number A = new Number();
               A.num   = 9;
               test(A);

               方法定義:

              public  void   test(Number n){
                n.num = 99;
              }

             那么A的num值會變成99.

          <三>;把對象保存在ArrayList中.如果把一個對象保存在一個AyyayList中,如果這個對象再發生改變,那么在這個ArrayList中保存的對象也會改變,說白了還是兩個還是公用同一個句柄.如:

             Number A = new Number();
               A.num = 100;
               java.util.ArrayList list = new ArrayList();
               list.add(A);
               A.num = 999;
               Number B = (Number)list.get(0);
               System.out.println(B.num);

          那么輸出為999,對象A的更改影響到了ArrayList中的保存的對象.

           

          posted on 2005-06-08 00:19 月亮 閱讀(272) 評論(0)  編輯  收藏


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


          網站導航:
           
          主站蜘蛛池模板: 永德县| 太白县| 靖安县| 涪陵区| 上虞市| 象州县| 深水埗区| 颍上县| 南昌县| 江山市| 兴城市| 隆化县| 东阳市| 榆林市| 五莲县| 高尔夫| 钟山县| 迁安市| 崇义县| 洪雅县| 盖州市| 佛冈县| 洛扎县| 衡水市| 大庆市| 凤山县| 水富县| 大名县| 东城区| 鄂伦春自治旗| 大同市| 新巴尔虎左旗| 延津县| 惠来县| 德安县| 肇州县| 阿合奇县| 新营市| 余庆县| 江山市| 沁源县|