posts - 89,  comments - 98,  trackbacks - 0
          值傳遞是在一個函數(shù)中,調(diào)用另外一個函數(shù),其中含有參數(shù)傳遞的情況。往往值傳遞就是把數(shù)據(jù)傳遞到另外一個函數(shù)中進(jìn)行進(jìn)一步處理,以更清楚地顯示函數(shù)的表達(dá)意思。在函數(shù)調(diào)用的時候會有數(shù)據(jù)傳遞,同樣要考慮形參和實參的問題,如下面的一個程序:
          <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);

          ??? ?}

          }

            這個程序最后輸出的結(jié)果將是:

            11

            Hello

            99f

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

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

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

          而被調(diào)用函數(shù)當(dāng)中的是一個本函數(shù)參數(shù)值聲明的值的一個考貝。  回復(fù)  更多評論
            

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


          網(wǎng)站導(dǎo)航:
           
          <2025年5月>
          27282930123
          45678910
          11121314151617
          18192021222324
          25262728293031
          1234567

          常用鏈接

          留言簿(4)

          隨筆分類(85)

          隨筆檔案(89)

          文章分類(14)

          文章檔案(42)

          收藏夾(37)

          java

          oracle

          Sybase

          搜索

          •  

          積分與排名

          • 積分 - 211050
          • 排名 - 266

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 马公市| 黑龙江省| 东台市| 黎平县| 高青县| 龙川县| 宝清县| 三台县| 吴旗县| 合阳县| 秦安县| 鹤庆县| 江津市| 上高县| 南陵县| 阿鲁科尔沁旗| 夹江县| 天门市| 赤城县| 彰化县| 东阿县| 彭水| 招远市| 中卫市| 河曲县| 久治县| 新巴尔虎左旗| 海晏县| 敦化市| 忻城县| 乌拉特中旗| 丹寨县| 黔东| 澜沧| 奎屯市| 景宁| 和田县| 思茅市| 萨迦县| 建始县| 凤阳县|