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 水煮三國 閱讀(308) 評論(1)  編輯  收藏 所屬分類: J2EE

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

          而被調用函數當中的是一個本函數參數值聲明的值的一個考貝。  回復  更多評論
            
          <2025年5月>
          27282930123
          45678910
          11121314151617
          18192021222324
          25262728293031
          1234567

          常用鏈接

          留言簿(4)

          隨筆分類(85)

          隨筆檔案(89)

          文章分類(14)

          文章檔案(42)

          收藏夾(37)

          java

          oracle

          Sybase

          搜索

          •  

          積分與排名

          • 積分 - 210994
          • 排名 - 266

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 崇文区| 化州市| 沂南县| 临夏市| 遂平县| 涞源县| 兴和县| 滨州市| 从化市| 昌图县| 饶河县| 乳山市| 舞钢市| 兖州市| 开化县| 崇礼县| 南雄市| 沽源县| 崇州市| 丹东市| 华池县| 招远市| 乡宁县| 靖宇县| 孝感市| 永胜县| 泰来县| 扬州市| 南郑县| 开鲁县| 繁峙县| 长治县| 汾西县| 乌审旗| 时尚| 桃源县| 苍山县| 武安市| 瑞丽市| 社旗县| 中宁县|