首頁 考試吧論壇 Exam8視線 考試商城 網(wǎng)絡(luò)課程 模擬考試 考友錄 實(shí)用文檔 求職招聘 論文下載
2011中考 | 2011高考 | 2012考研 | 考研培訓(xùn) | 在職研 | 自學(xué)考試 | 成人高考 | 法律碩士 | MBA考試
MPA考試 | 中科院
四六級 | 職稱英語 | 商務(wù)英語 | 公共英語 | 托福 | 雅思 | 專四專八 | 口譯筆譯 | 博思 | GRE GMAT
新概念英語 | 成人英語三級 | 申碩英語 | 攻碩英語 | 職稱日語 | 日語學(xué)習(xí) | 法語 | 德語 | 韓語
計(jì)算機(jī)等級考試 | 軟件水平考試 | 職稱計(jì)算機(jī) | 微軟認(rèn)證 | 思科認(rèn)證 | Oracle認(rèn)證 | Linux認(rèn)證
華為認(rèn)證 | Java認(rèn)證
公務(wù)員 | 報(bào)關(guān)員 | 銀行從業(yè)資格 | 證券從業(yè)資格 | 期貨從業(yè)資格 | 司法考試 | 法律顧問 | 導(dǎo)游資格
報(bào)檢員 | 教師資格 | 社會工作者 | 外銷員 | 國際商務(wù)師 | 跟單員 | 單證員 | 物流師 | 價(jià)格鑒證師
人力資源 | 管理咨詢師考試 | 秘書資格 | 心理咨詢師考試 | 出版專業(yè)資格 | 廣告師職業(yè)水平
駕駛員 | 網(wǎng)絡(luò)編輯
衛(wèi)生資格 | 執(zhí)業(yè)醫(yī)師 | 執(zhí)業(yè)藥師 | 執(zhí)業(yè)護(hù)士
會計(jì)從業(yè)資格考試會計(jì)證) | 經(jīng)濟(jì)師 | 會計(jì)職稱 | 注冊會計(jì)師 | 審計(jì)師 | 注冊稅務(wù)師
注冊資產(chǎn)評估師 | 高級會計(jì)師 | ACCA | 統(tǒng)計(jì)師 | 精算師 | 理財(cái)規(guī)劃師 | 國際內(nèi)審師
一級建造師 | 二級建造師 | 造價(jià)工程師 | 造價(jià)員 | 咨詢工程師 | 監(jiān)理工程師 | 安全工程師
質(zhì)量工程師 | 物業(yè)管理師 | 招標(biāo)師 | 結(jié)構(gòu)工程師 | 建筑師 | 房地產(chǎn)估價(jià)師 | 土地估價(jià)師 | 巖土師
設(shè)備監(jiān)理師 | 房地產(chǎn)經(jīng)紀(jì)人 | 投資項(xiàng)目管理師 | 土地登記代理人 | 環(huán)境影響評價(jià)師 | 環(huán)保工程師
城市規(guī)劃師 | 公路監(jiān)理師 | 公路造價(jià)師 | 安全評價(jià)師 | 電氣工程師 | 注冊測繪師 | 注冊計(jì)量師
繽紛校園 | 實(shí)用文檔 | 英語學(xué)習(xí) | 作文大全 | 求職招聘 | 論文下載 | 訪談 | 游戲

計(jì)算機(jī)等級考試二級Java語言中的參數(shù)傳遞詳解

 

  按照上面的參數(shù)傳遞規(guī)則,該代碼的輸出結(jié)果應(yīng)該是:5 abc 2。因?yàn)閕nt類型是按值傳遞,所以把參數(shù)m傳遞到方法t1時(shí),相當(dāng)于又復(fù)制了一份m的值,在方法t1內(nèi)部修改的是復(fù)制后的值,所以m的值不變,s1的輸出和m類似。而arr是數(shù)組,屬于按址傳遞,也就是把a(bǔ)rr的地址傳遞到了方法t3內(nèi)部,在方法t3內(nèi)部修改數(shù)組中的值時(shí),原來的內(nèi)容也發(fā)生改變。

  以上特性是Java語言中的規(guī)定,在語法上無法指定參數(shù)傳遞是按值傳遞還是按址傳遞,但是可以通過下面的變換實(shí)現(xiàn):

  1.對于按值傳遞的參數(shù),如果需要在方法調(diào)用以后修改參數(shù)的值,可以利用返回值來實(shí)現(xiàn);

  2.對于按值傳遞的參數(shù),如果需要在方法內(nèi)部修改時(shí)原來的參數(shù)不改變,則可以在方法內(nèi)部重新創(chuàng)建該對象實(shí)現(xiàn)。

  示例代碼如下:

  public class Test2{

  public static int t1(int n){

  n = 10;

  return n;

  }

  public static String t2(String s){

  s = “123”;

  return s;

  }

  public static void t3(int[] array){

  //創(chuàng)建新的數(shù)組并賦值

  int[] newArray = new int[array.length];

  //數(shù)據(jù)拷貝

  System.arraycopy(array,0,newArray,0,array.length);

  newArray[0] = 2;

  }

  public static void main(String[] args){

  int m = 5;

  //重新賦值

  m = t1(m);

  System.out.println(m);

  String s1 = “abc”;

  //重新賦值

  s1 = t2(s1);

  System.out.println(s1);

  int[] arr = {1,2,3,4};

  t3(arr);

  System.out.println(arr[0]);

  }

  }

  這樣,程序的輸出結(jié)果就將是:10 123 1。

  在實(shí)際的程序開發(fā)中,可以根據(jù)需要使用類似的結(jié)構(gòu)來進(jìn)行實(shí)現(xiàn)。

  下面再介紹一個(gè)參數(shù)傳遞的常見應(yīng)用,利用參數(shù)傳遞實(shí)現(xiàn)返回值,這樣的功能在IO類設(shè)計(jì)的read方法中大量使用。

  示例代碼如下:

  public class Test3{

  public static void initArray(int[] array){

  for(int i = 0;i < array.length;i++){

  array[i] = i;

  }

  }

  public static void main(String[] args){

  int[] a = new int[10];

  initArray(a);

  for(int i = 0;i < a.length;i++){

  System.out.println(a[i]);

  }

  }

  }

  在該示例代碼中,在initArray方法內(nèi)部修改了數(shù)組的值以后,外部數(shù)組a的值也會發(fā)生改變,間接實(shí)現(xiàn)了返回值的效果。當(dāng)然,在該示例代碼中,因?yàn)橹环祷匾粋(gè)參數(shù),所以作用體現(xiàn)的不明顯,如果需要返回多個(gè)參數(shù)時(shí),使用按址傳遞是一種不錯(cuò)的主意。

  相關(guān)推薦:2009年4月計(jì)算機(jī)等級二級考試VF程序設(shè)計(jì)輔導(dǎo)
       C語言輔導(dǎo)三種常見的中文內(nèi)碼的轉(zhuǎn)換方法
       計(jì)算機(jī)等考二級C語言考前復(fù)習(xí)資料(for循環(huán))
文章搜索
版權(quán)聲明:如果計(jì)算機(jī)等級考試網(wǎng)所轉(zhuǎn)載內(nèi)容不慎侵犯了您的權(quán)益,請與我們聯(lián)系800@exam8.com,我們將會及時(shí)處理。如轉(zhuǎn)載本計(jì)算機(jī)等級考試網(wǎng)內(nèi)容,請注明出處。