隨筆-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 星光 閱讀(249) | 評論 (2)編輯 收藏
          僅列出標題  
          主站蜘蛛池模板: 荥经县| 栖霞市| 广灵县| 金塔县| 辰溪县| 沙坪坝区| 商城县| 清新县| 乐昌市| 枣阳市| 方城县| 霞浦县| 荥阳市| 无为县| 德钦县| 那坡县| 镇江市| 霍城县| 慈利县| 化德县| 阳信县| 图片| 永康市| 南丹县| 龙里县| 隆尧县| 巩义市| 镇巴县| 辽中县| 汾阳市| 梁山县| 宁德市| 永定县| 罗源县| 永泰县| 西盟| 金沙县| 宁德市| 伊金霍洛旗| 天水市| 望谟县|