Java編程那些事兒52—方法聲明鄭州遊戲學院 陳躍峰出自:http://blog.csdn.net/mailbomb
第七章 方法 方法(method),在面向過程的語言中稱作函數(function),在組合語言中稱作子程式,是一個代碼功能塊,實現某個特定的功能。在實際的程式開發中,方法是一種基礎的組織代碼的方式。本部分就介紹方法相關的概念、相關文法以及實際使用時需要注意的問題。
7.1 方法概述 方法的概念來源於數學上的函數,在數學中,當資料具有一定的規律時,就是用一個函數來代碼該數位規律,例如f(n)=n則代表1、2、3、……這樣的一個數列。在數學上n是參數,對於確定的n值只有一個f(n)的值和它對應。 方法是一組為了實現特定功能的代碼塊的集合。方法在文法上的功能主要有以下兩個:l 結構化代碼將代碼按照功能進行組織,使代碼的結構比較清晰,容易閱讀和修改,也就是程式的可維護性強。l 減少代碼重複一個固定的功能,可能會在程式中多次使用,在使用時只需要調用寫好的方法,而不用重複書寫對應的功能代碼。方法在書寫時需要注意以下兩點:l 邏輯嚴謹方法實現的一個完整的功能,所以在書寫時要考慮到各種可能的情況,並對每種情況做出恰當的處理。l 通用性強方法實現的是一種功能,在實際實現時,可以根據需要,使方法具備一定的通用性,除非必要,否則不要寫專用的方法。 在Java語言中,恰當的使用方法,將使程式更加優雅,便於閱讀和使用。下面就來介紹方法聲明的文法格式。
7.2 方法聲明 方法聲明寫在代碼中類聲明的內部,方法聲明的外部,虛擬碼如下: public class Hello{ 方法聲明1 方法聲明2 …… } 在Java語言中,方法聲明之間沒有順序。方法聲明,就是聲明一種新的功能,或者說創造一種新的功能。例如以下是一個求int資料絕對值的方法聲明代碼: public int abs(int n){ if(n > 0){ return n; }else{ return –n; } } 這裡就實現了求int值絕對值的功能,為了使該功能通用,使用一個參數n代表需要求絕對值的數值,在方法內部使用求絕對值的邏輯:正數的絕對值是自身,負數的絕對值是相反數,使用return語句將方法運算的結果返回。 具體方法聲明的文法格式如下: 存取控制符 [修飾符] 傳回值類型 方法名稱(參數列表){ 方法體 } 在實際聲明一個方法時,需要依次確定以上內容。下面是具體的說明:1、 存取控制符存取控制符限定方法的可見範圍,或者說是方法被調用的範圍。方法的存取控制符有四種,按可見範圍從大到小依次是:public、protected,無存取控制符,private。其中無存取控制符不書寫關鍵字即可。具體的範圍在後續有詳細介紹。2、 修飾符修飾符是可選的,也就是在方法聲明時可以不書寫。修飾符是為方法增加特定的文法功能,對於方法實現的邏輯功能無影響。方法的存取控制符有五個,依次是:u static——靜態u final——最終的u abstract——抽象的u synchronized——同步的u native——本地的具體修飾符的作用在後續內容中將詳細介紹。3、 傳回值類型傳回值類型是指方法功能實現以後需要得到的結果類型,該類型可以是Java語言中的任意資料類型,包括基礎資料型別 (Elementary Data Type)和複合資料型別。如果方法功能實現以後不需要反饋結果,則傳回值類型書寫為void。在實際書寫方法時,需要首先考慮一下方法是否需要反饋結果,如果反饋結果,則結果的類型是什嗎?這個根據方法的需要進行確定,例如上面求絕對值的方法,int類型的絕對值還是int類型,所以把傳回值類型做成int型。在方法聲明裡聲明傳回值類型,便於方法調用時獲得傳回值,並對傳回值進行賦值以及運算等操作。4、 方法名稱方法名稱是一個標識符,用來代表該功能塊,在方法調用時,需要方法名稱來確定調用的內容。為了增強代碼的可讀性,一般方法名稱標識符和該方法的功能一直,例如實現數組排序的方法,可以將方法名稱設定為sort。在Java編碼規範中,要求方法的首字母小寫,而方法名稱中單詞和單詞間隔的第一個字母大寫,例如bubbleSort。5、 參數列表參數列表是聲明方法需要從外部傳入的資料類型以及個數,例如上面求int類型絕對值的方法,每次需要從外部傳入一個int類型的值,這就需要在參數列表部分進行聲明,文法格式為: 資料類型 參數名稱多個參數時的格式為: 資料類型 參數名稱1,資料類型 參數名稱2,……聲明參數時,類型在前,名稱在後,如果有多個參數時,參數和參數之間使用逗號進行分割。參數的值在方法調用時進行指定,而在方法內部,可以把參數看作是已經初始化完成的變數,直接進行使用。參數列表部分是方法通用性的最主要實現部分,理論上來說,參數越多,方法的通用性越強,在聲明方法時,可以根據需要確定參數的個數,以及參數的類型。參數在參數列表中的排列順序只和方法調用時有關。6、 方法體方法體是方法的功能實現代碼。方法體部分在邏輯上實現了方法的功能,該部分都是具體的實現代碼,不同的邏輯實現代碼區別會比較大。在方法體部分,如果需要返回結果的值,則可以使用return語句,其文法格式為: return 結果的值;或無結果返回時: return;如果方法的傳回值類型不是void,則可以使用return返回結果的值,要求結果值的類型和方法聲明時傳回值類型必須一致。如果傳回值類型是void時,可以使用return語句實現方法返回,而不需要傳回值。當代碼執行到return語句時,方法結束,所以return語句的後續書寫順序的代碼,例如: return 0; int n = 0; //語法錯誤,永遠無法執行到該語句另外,如果傳回值類型不是void時,需要保證有值返回,例如下面的方法就有語法錯誤: public int test(int a){ if(a < 0){ return 0; } }則該方法的聲明代碼中,當a的值大於等於零時,則沒有傳回值,這文法上稱作傳回值丟失,這個也是在書寫return語句時需要特別注意的問題。