隨筆-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 @ 2008-09-05 14:48 星光 閱讀(253) | 評論 (2)編輯 收藏
          僅列出標題  
          主站蜘蛛池模板: 阳谷县| 同德县| 兰考县| 南岸区| 临沂市| 勃利县| 炎陵县| 子洲县| 长白| 辉南县| 余干县| 轮台县| 射阳县| 庄河市| 方山县| 酒泉市| 平塘县| 剑阁县| 金溪县| 宁河县| 肃宁县| 延安市| 洪江市| 壶关县| 柳州市| 大洼县| 类乌齐县| 木兰县| 定西市| 孝义市| 石门县| 社会| 金乡县| 吐鲁番市| 阜南县| 宜黄县| 贵港市| 麻栗坡县| 玉屏| 阳原县| 中阳县|