posts - 89,  comments - 98,  trackbacks - 0
          值傳遞是在一個函數中,調用另外一個函數,其中含有參數傳遞的情況。往往值傳遞就是把數據傳遞到另外一個函數中進行進一步處理,以更清楚地顯示函數的表達意思。在函數調用的時候會有數據傳遞,同樣要考慮形參和實參的問題,如下面的一個程序:
          <a target="_blank"><img src="/upimg/2006-05-07/142825_09_534.gif" width="468" height="60" border="0" /></a>

          public class PassTest

          {

          ??? float ptValue;

          ??? ?public void changeInt (int value)

          ??? {

          ?????????? value = 55;

          ??? }

          ??? ?public void changeStr (String value)

          ??? {

          ?????????? value = new String ("different");

          ??? }

          ??? public void changeObjValue (PassTest ref)

          ??? {

          ?????????? ref.ptValue = 99f;

          ??? }

          ??? public static void main (String args[])

          ??? {

          ?????????? String str;

          ?????????? intval;

          ?????????? PassTest pt = new PassTest ();

          ?????????? val = 11;

          ?????????? pt.changeInt (val);

          ?????????? System.out.println ("Int value is: " + val);

          ?????????? str = new String ("Hello");

          ?????????? pt.changeStr (str);

          ?????????? System.out.println ("Str value is: " + str);

          ?????????? pt.ptValue = 101f;

          ?????????? pt.changeObjValue (pt);

          ?????????? System.out.println ("Current ptValue is: " + pt.ptValue);

          ??? ?}

          }

            這個程序最后輸出的結果將是:

            11

            Hello

            99f

            開始的11和Hello就是遵循參數傳遞的原則,雖然改變了形參的值,但是實參卻不改變,這同C語言中是一樣的。那么如果想改變函數中的實參的值,那么應該怎么做呢?我們知道,在C語言中,我們可以采用指針變量,用指針變量作為函數的參數,那么這樣,傳遞的就是參數存放的地址,那么在函數中改變同一地址的參數值的時候,就不會發生錯誤,可是,在java中沒有指針的說法,那么,要實現上述C語言的做法,應該怎么處理呢?我們知道,java中處處都是考慮對象的,句柄是用來操作對象的活動的,那么我們如果將對象的句柄傳遞到函數中去,就可以使兩者指向同一個句柄(也就是地址),這樣就可以完成數據的修改了。見上面的程序,我們可以知道,pt是主函數中創建的PassTest的對象,通過傳遞它,就可以完成地址的傳遞,子函數中,ref與主函數的pt指向的其實是一個內存單元,那么修改ref中的ptValue的值,也就是修改pt中的ptValue的值,即使沒有最后的數據返回,這個數據也是會改變的。

          posted on 2006-07-21 15:54 水煮三國 閱讀(309) 評論(1)  編輯  收藏 所屬分類: J2EE

          FeedBack:
          # re: JAVA當中的值傳遞
          2006-07-21 15:56 | 水煮三國
          java當中的值傳遞不會改變本函數聲明的參數值,而在被調用函數當中參數的改變不會影響到本函數的參數值。

          而被調用函數當中的是一個本函數參數值聲明的值的一個考貝。  回復  更多評論
            
          <2006年7月>
          2526272829301
          2345678
          9101112131415
          16171819202122
          23242526272829
          303112345

          常用鏈接

          留言簿(4)

          隨筆分類(85)

          隨筆檔案(89)

          文章分類(14)

          文章檔案(42)

          收藏夾(37)

          java

          oracle

          Sybase

          搜索

          •  

          積分與排名

          • 積分 - 211126
          • 排名 - 265

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 英德市| 琼结县| 三原县| 城步| 石泉县| 大余县| 尼木县| 穆棱市| 闸北区| 聊城市| 全椒县| 乌拉特中旗| 达日县| 石渠县| 石狮市| 望都县| 龙门县| 东平县| 油尖旺区| 沾益县| 农安县| 申扎县| 前郭尔| 洮南市| 怀集县| 海淀区| 绥芬河市| 牟定县| 甘肃省| 博客| 启东市| 余干县| 紫金县| 炎陵县| 高台县| 曲靖市| 罗山县| 长乐市| 岳普湖县| 鹤庆县| 桦川县|