奶头挺立呻吟高潮av全片,成人试看120秒体验区,性欧美极品v,A片高潮抽搐揉捏奶头视频

java語言

Java語言中方法之間數(shù)據(jù)傳遞的探討

時間:2025-04-23 13:58:26 java語言 我要投稿
  • 相關(guān)推薦

Java語言中方法之間數(shù)據(jù)傳遞的探討

  導(dǎo)語:在面向?qū)ο蟮腏ava語言中,方法是處理數(shù)據(jù)的基本模塊,方法之間的數(shù)據(jù)傳遞是掌握編程方法的關(guān)鍵。下面就由小編為大家介紹一下Java語言中方法之間數(shù)據(jù)傳遞的探討,歡迎大家閱讀!

  1問題的提出

  在面向?qū)ο蟮腏ava語言中,類是問題空間的高度抽象和概括,是一個模板,而對象是類的特例,解空間的具體實現(xiàn)則是由若干個類的對象集合而成。方法是類的動態(tài)屬性,代表了類所具有的功能和操作。Java語言中的方法既可以在類中,也可以在接口中聲明,但是,它們只能在類中實現(xiàn)。Java語言中的所有操作都是用方法來實現(xiàn)的。

  一個方法通過另一個方法的調(diào)用被激活,一個被調(diào)用的方法被激活,既需要指定被調(diào)用方法的方法名,也需要為被調(diào)用的方法提供相應(yīng)的數(shù)據(jù),以便于被調(diào)用方法對數(shù)據(jù)的加工處理,乃至于將加工處理的結(jié)果返回給方法的調(diào)用者。

  2Java語言中方法間的數(shù)據(jù)傳遞方法

  方法是數(shù)據(jù)加工處理或相應(yīng)操作的基本模塊,為了實現(xiàn)某種需求而調(diào)用一個方法,需要為被調(diào)用的方法傳遞數(shù)據(jù),以便于被調(diào)用的方法依據(jù)所提供的數(shù)據(jù)進行相應(yīng)的操作。

  C++語言的函數(shù)間的數(shù)據(jù)傳遞可以分為:數(shù)值傳遞、地址傳遞和引用傳遞。地址傳遞的形參是同類型的指針,由于指針操作的不安全等問題,Java語言屏棄了指針,故Java語言方法之間的數(shù)據(jù)傳遞只有數(shù)值傳遞和引用傳遞。

  2.1方法間的數(shù)值傳遞

  所謂的數(shù)值傳遞又稱為值傳遞,數(shù)值傳遞的特征是:調(diào)用方法的實參可以是常量、變量或者是表達式,形參則是對應(yīng)數(shù)據(jù)類型的變量。如果實參是變量,則實參和形參是相互獨立的兩個單元。在方法調(diào)用的過程中,實參的值將拷貝到形參中,此后形參的任何修改都不會影響實參。數(shù)值傳遞方法見例1。

  [例1]數(shù)值傳遞調(diào)用方法舉例:

  importjava.io.*;

  public class ValueTransmit

  {publicstatic void main(Stringargs[])

  {intx=5,y=66;

  System.out.println(“在主方法,交換前的:x=”+x+“,y=”+y);

  swap(x,y);

  System.out.println(“在主方法,交換后的:x=”+x+“,y=”+y);

  }

  static voidswap(int x,int y)

  {int temp;

  System.out.println(“在swap方法未交換時:x=”+x+“,y=”+y);

  temp=x;x=y;y=temp;

  System.out.println(“在swap方法交換之后:x=”+x+“,y=”+y);

  }

  }

  例1程序的輸出結(jié)果如下所示:

  在主方法, 交換前的:x=5,y=66

  在swap方法未交換時:x=5,y=66

  在swap方法交換之后:x=66,y=5

  在主方法, 交換前的:x=5,y=66

  在例1程序中,方法調(diào)用的“swap(x,y);”中的實在參數(shù)x,y是兩個單元,而形式參數(shù)中的x,y又是兩個單元,它們是互相獨立的。所以,對形式參數(shù)的改變并不影響實在參數(shù)的內(nèi)容;程序的運行結(jié)果也驗證上述觀點。具體參數(shù)傳遞請見圖1所示。

  2.2方法間的引用傳遞

  方法之間的數(shù)據(jù)傳遞還有一種方法,就是引用傳遞。引用傳遞的實質(zhì)就是將實在參數(shù)的地址傳遞給形式參數(shù)引用,也就是形式參數(shù)是實在參數(shù)的別名。引用傳遞方法請見例2。

  [例2]引用傳遞方法舉例:

  // ReferenceTransmit.java 參考源代碼如下:

  importjava.io.*;

  public class ReferenceTransmit

  {publicstatic void main(Stringargs[])

  {int a[]= {9,-3,6,22,-77,999},n=6;

  System.out.print(“數(shù)組排序前的情況:”);

  for(int i=0;i<6;i++)

  System.out.print(“ ” +a[i]+“ ”);

  System.out.println(“ ”);

  SelectSort(a,n);

  System.out.print(“選擇排序后的情況:”);

  for(int i=0;i<6;i++)

  System.out.print(“ ” +a[i]+“ ”);

  }

  static voidSelectSort(int arr[],int n)

  {int temp,p;

  for(int i=0;i  { p=i;

  for(int j=i+1;j  if(arr[p]>arr[j])p=j;

  if(p!=i){temp=arr[p]; arr[p]=arr[i];arr[i]=temp;}

  }

  }

  }

  例2程序的執(zhí)行結(jié)果如下所示:

  數(shù)組排序前的情況:9-3622-77999

  選擇排序后的情況:-77-36922999

  在例2程序的方法調(diào)用語句“SelectSort(a,n);”中,a是數(shù)組名,是地址常量,是數(shù)據(jù)區(qū)域的首地址;SelectSort(int arr[],int n)的形式參數(shù)arr[ ]是數(shù)組的引用,而不是數(shù)組聲明或定義。在形式參數(shù)和實在參數(shù)的結(jié)合中,形式參數(shù)arr是實在參數(shù)a的別名。在方法SelectSort()中,對arr[i]的任何修改,實際上就是對實在參數(shù)a[i]的修改。程序的運行結(jié)果也證明了這一點。

  3Java語言方法返值的分類

  方法調(diào)用有時需要將方法的處理結(jié)果返回給方法的調(diào)用者,這樣的方法將有返值。依據(jù)方法返值與否可以將方法分為無返值方法和有返值方法,本文的例1和例2中的方法都是無返值的方法。依據(jù)返值的具體數(shù)據(jù)類型又可以將方法分為返值為基本數(shù)據(jù)類型和返值為對象的引用的方法。

  3.1方法的返值為基本數(shù)據(jù)

  返值為基本數(shù)據(jù)的方法在定義方法時要給出基本數(shù)據(jù)類型說明符。Java語言中,方法的返值為基本數(shù)據(jù)類型的方法,定義格式為:

  訪問控制修飾返值數(shù)據(jù)類型 方法名(形參表)

  {方法體主體部分

  return表達式;

  }

  其中:訪問控制修飾符可以是public、final、static等,用于標識該方法的訪問控制屬性以及作用域選擇等;而返值數(shù)據(jù)類型就是Java語言的基本數(shù)據(jù)類型的標識符,用于表明該方法的返值為何種數(shù)據(jù)類型。返值為基本數(shù)據(jù)類型的方法請看例3。

  [例3]返值為基本數(shù)據(jù)類型的方法:

  // ReturnBasicDataType.java參考源代碼如下:

  import java.io.*;

  publicclassReturnBasicDataType

  {public static void main(String args[])

  {doublearr[]={1.2,290.5,5.7,64.0,879.5},av;

  av=aver(arr,5);

  System.out.println(“ aver=”+av);

  }

  static double aver(double a[],int n)

  {double sum=0.0;

  for(int i=0;i  return sum/n;

  }

  }

  例3的輸出結(jié)果如下所示:

  aver=248.18

  本例中“static double aver(double a[],int n)”是方法頭。double是該方法的返值類型,即基本數(shù)據(jù)類型;參數(shù)double a[]是引用傳遞,參數(shù)intn是數(shù)值傳遞。語句“return sum/n;”是將sum/n的值返回給方法的調(diào)用者。

  3.2方法的返值為對象的引用

  另一種返值類型是對象引用。這種情況一般是:主調(diào)方法傳遞的是對象的地址,被調(diào)方法的形式參數(shù)是對應(yīng)類型的引用,該方法的返值類型是同一類型的引用。返值為引用的方法見例4。

  [例4]返值為引用的方法舉例:

  // ReturnReference.java 參考源代碼如下:

  import java.io.*;

  publicclassReturnReference

  {public static void main(String args[])

  {example x=new example(),y;

  x.setdata(123,“ABCD”);

  System.out.println( x.getx()+“,”+x.gety());

  y=tranobjct(x);

  System.out.print(x.getx()+“,”+y.gety());

  }

  static exampletranobjct(examplew)

  {System.out.println( w.getx()+“,”+w.gety());

  w.setdata(456,“efhi”);

  System.out.println( w.getx()+“,”+w.gety());

  example z=new example();

  z.setdata(567,“MNIJ”);

  returnz;

  }

  }

  classexample

  {int x; Stringy;

  public void setdata(int a,Stringb)

  {x=a;y= new String(b); }

  public int getx(){return x; }

  public String gety(){return y; }

  }

  例4程序的運行結(jié)果如下所示:

  123,ABCD

  123,ABCD

  456,efhi

  456,MNIJ

  例4的具體情況如圖2所示:

  圖2可知:x和w引用所指的是同一個無名對象,所以,以w引用對對象的操作實質(zhì)就是對x引用所指對象的操作。而 “example z=new example();”語句也創(chuàng)建一個無名對象,設(shè)置數(shù)據(jù)成員后,通過“returnz; ”將此引用返給方法的調(diào)用者,使得引用y指向該對象,故有以上輸出。

  “tranobjct(x)”語句是將example類對象的引用(地址)x傳遞給tranobjct方法,而在tranobjct()方法中形式參數(shù)是example 類的對象的引用w。經(jīng)過語句“w.setdata(456,”efhi“);”修改參數(shù)后,數(shù)據(jù)顯示結(jié)果說明對象的數(shù)據(jù)成員修改正確。

  又有“example z=new example();”語句創(chuàng)建一個新的對象z,通過“z.setdata(567, “MNIJ”);”語句將其數(shù)據(jù)成員分別設(shè)置為“567”和“MNIJ”,并由“returnz;”語句將example類型的引用返回給方法的調(diào)用者,即將example對象的引用z返值給同類的引用y。由“System.out.println(x.getx()+”,“+y.gety());”語句看出, “x.getx()”返回的是原對象經(jīng)過“w.setdata(456,”efhi“);”語句修改后的數(shù)據(jù)成員x 的值;而“y.gety()”返回的是“z.setdata(567,”MNIJ“);”語句操作后數(shù)據(jù)成員y的值。

  4結(jié)語

  有些資料將“static exampletranobjct(examplew)”方法稱之為返值為對象的方法,筆者不能茍同。上述方法的返值類型貌似example類型的對象,其實質(zhì)還是“example”類型對象的引用。何以見得?Java語言創(chuàng)建對象的一般格式是:類名 引用名=new 類名([初始化參數(shù)]);語句的“new 類名([初始化參數(shù)])”部分是創(chuàng)建一個無名對象,再通過賦值操作將無名對象的首地址賦值給一個引用名,今后將以該引用來操作這個無名的對象。故不能將上述方法稱為返值是對象的方法。

【Java語言中方法之間數(shù)據(jù)傳遞的探討】相關(guān)文章:

從Java的jar文件中讀取數(shù)據(jù)的方法08-24

Java的jar文件中讀取數(shù)據(jù)的方法09-27

從Java的jar文件中如何讀取數(shù)據(jù)的方法10-18

JAVA語言中的參數(shù)傳遞11-03

java語言參數(shù)傳遞介紹06-12

Java中的數(shù)據(jù)結(jié)構(gòu)06-19

Java語言的數(shù)據(jù)類型10-27

詳解Java語言中的參數(shù)傳遞11-08

java輸入數(shù)據(jù)流的方法08-19

主站蜘蛛池模板: 工布江达县| 长乐市| 连平县| 濮阳市| 昌吉市| 东明县| 陕西省| 朔州市| 高州市| 额尔古纳市| 云浮市| 柯坪县| 乌海市| 宁国市| 鹤壁市| 天等县| 嘉义市| 密山市| 沁阳市| 磐石市| 乌拉特中旗| 新密市| 丹阳市| 南昌县| 河南省| 奉化市| 全南县| 郧西县| 溆浦县| 中山市| 江油市| 沾益县| 白玉县| 万源市| 乐业县| 巩义市| 宁晋县| 木里| 德令哈市| 吴堡县| 蓬溪县|