語言的藝術(shù) 卡耐基 [Java語言中方法之間數(shù)據(jù)傳遞的探討]

        發(fā)布時間:2020-02-16 來源: 幽默笑話 點擊:

          摘要:在面向?qū)ο蟮腏ava語言中,方法是處理數(shù)據(jù)的基本模塊,方法之間的數(shù)據(jù)傳遞是掌握編程方法的關(guān)鍵。本文將其方法間的數(shù)據(jù)傳遞歸納為:方法的實參和形參間的值傳遞和引用傳遞;方法的返回值可以分為基本數(shù)據(jù)或?qū)ο蟮囊茫徊⑼ㄟ^實例進行了說明。
          關(guān)鍵詞:對象;引用;值傳遞;引用傳遞
          中圖分類號:TP312 文獻標(biāo)識碼:A
          
          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;iarr[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等,用于標(biāo)識該方法的訪問控制屬性以及作用域選擇等;而返值數(shù)據(jù)類型就是Java語言的基本數(shù)據(jù)類型的標(biāo)識符,用于表明該方法的返值為何種數(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

        相關(guān)熱詞搜索:傳遞 探討 語言 Java語言中方法之間數(shù)據(jù)傳遞的探討 java線程之間的數(shù)據(jù)傳遞 java線程間傳遞數(shù)據(jù)

        版權(quán)所有 蒲公英文摘 www.zuancaijixie.com
        91啦在线播放,特级一级全黄毛片免费,国产中文一区,亚洲国产一成人久久精品