<dfn id="w48us"></dfn><ul id="w48us"></ul>
  • <ul id="w48us"></ul>
  • <del id="w48us"></del>
    <ul id="w48us"></ul>
  • 詳解Java語言中的參數傳遞

    時間:2024-09-01 13:52:17 計算機應用 我要投稿
    • 相關推薦

    詳解Java語言中的參數傳遞

      導語:和其它程序設計語言類似,Java語言的參數傳遞也分為兩種,下面就由小編為大家介紹一下詳解Java語言中的參數傳遞,希望對大家有所幫助!

      1.按值傳遞(by value)

      適用范圍:8種基本數據類型、String對象

      特點:在內存中復制一份數據,把復制后的數據傳遞到方法內部

      作用:在方法內部改變參數的值,外部數據不會跟著發生改變

      2.按址傳遞(by address)

      適用范圍:數組、除String以外的其他所有類型的對象

      特點:將對象的地址傳遞到方法內部

      作用:在方法內部修改對象的內容,外部數據也會跟著發生改變

      基礎示例代碼:

      public class Test1{

      public static void t1(int n){

      n = 10;

      }

      public static void t2(String s){

      s = "123";

      }

      public static void t3(int array){

      array[0] = 2;

      }

      public static void main(String args){

      int m = 5;

      1(m);

      System.out.println(m);

      String s1 = "abc";

      t2(s1);

      System.out.println(s1);

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

      t3(arr);

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

      }

      }

      按照上面的參數傳遞規則,該代碼的輸出結果應該是:5 abc 2.因為int類型是按值傳遞,所以把參數m傳遞到方法t1時,相當于又復制了一份m的值,在方法t1內部修改的是復制后的值,所以m的值不變,s1的輸出和m類似。而arr是數組,屬于按址傳遞,也就是把arr的地址傳遞到了方法t3內部,在方法t3內部修改數組中的值時,原來的內容也發生改變。|||

      以上特性是Java語言中的規定,在語法上無法指定參數傳遞是按值傳遞還是按址傳遞,但是可以通過下面的變換實現:

      1.對于按值傳遞的參數,如果需要在方法調用以后修改參數的值,可以利用返回值來實現;對于按值傳遞的參數,如果需要在方法內部修改時原來的參數不改變,則可以在方法內部重新創建該對象實現。

      示例代碼

      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){

      //創建新的數組并賦值

      int newArray = new int[array.length];

      //數據拷貝

      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]);

      }

      }

      這樣,程序的輸出結果就將是:10 123 1.

      在實際的程序開發中,可以根據需要使用類似的結構來進行實現。

      下面再介紹一個參數傳遞的常見應用,利用參數傳遞實現返回值,這樣的功能在IO類設計的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方法內部修改了數組的值以后,外部數組a的值也會發生改變,間接實現了返回值的效果。當然,在該示例代碼中,因為只返回一個參數,所以作用體現的不明顯,如果需要返回多個參數時,使用按址傳遞是一種不錯的主意。

    【詳解Java語言中的參數傳遞】相關文章:

    Java語言中的流程控制07-09

    java jar 命令行參數06-04

    2016最新java classloader詳解08-11

    Java基礎知識詳解09-02

    ASP 游標參數詳解記錄集07-21

    筆記本SDR內存參數詳解05-18

    java命令行參數解析201608-12

    Java命令參數說明大全10-17

    2016年java編譯命令詳解09-27

    C語言中32個關鍵字詳解09-11

    主站蜘蛛池模板: 亚洲欧洲自拍拍偷精品 美利坚| 久久久久这里只有精品 | 国内精品人妻无码久久久影院 | 日本欧美韩国日本精品| 亚洲国产精品综合久久一线| www.精品| 国产精品久久久久久久久| 亚洲精品乱码久久久久久按摩| 久久久99精品一区二区| 91精品啪在线观看国产电影| 久久精品麻豆日日躁夜夜躁| 无码人妻精品一区二| 国产精品免费在线播放| 国内精品在线视频| 国产精品无码午夜福利| 青青草原精品99久久精品66| 亚洲国产精品不卡毛片a在线| 国产乱人伦偷精品视频| 久久久久免费精品国产| MM1313亚洲国产精品| 精品无码人妻一区二区免费蜜桃| 亚洲AV永久青草无码精品| 亚洲国产精品自产在线播放 | 国产亚洲色婷婷久久99精品91| 97视频在线精品国自产拍| 四虎永久在线精品国产免费| 精品视频第一页| 免费精品99久久国产综合精品 | 精品精品国产高清a毛片牛牛| 国产精品污WWW一区二区三区| 日韩精品无码永久免费网站| 99在线精品视频| 无夜精品久久久久久| 87国产私拍福利精品视频| 亚洲午夜精品久久久久久浪潮| 真实国产乱子伦精品免费| 亚洲国产精品SSS在线观看AV| 国产精品夜色视频一级区 | 国产亚洲精品无码专区| 亚洲精品在线观看视频| 亚洲А∨精品天堂在线|