隨筆-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 星光 閱讀(249) 評論(2)  編輯  收藏

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

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

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


          網站導航:
           
          主站蜘蛛池模板: 怀仁县| 绍兴市| 新邵县| 翁源县| 乌审旗| 嵊州市| 枞阳县| 邯郸县| 中西区| 班玛县| 涪陵区| 涡阳县| 台湾省| 遂昌县| 苏尼特左旗| 商城县| 桃园市| 芦溪县| 泾源县| 桐城市| 益阳市| 华亭县| 桐乡市| 钦州市| 库尔勒市| 滁州市| 永兴县| 略阳县| 曲沃县| 抚远县| 民权县| 广饶县| 华蓥市| 富顺县| 江永县| 公安县| 建平县| 磴口县| 炉霍县| 茌平县| 乌兰察布市|