1、方法
(1)概念:①解決事情的辦法②實現功能的程式碼段。
(2)優點:①提到程式碼的複用性②便於後期維護。
(3)特點:①不呼叫不執行②方法不能巢狀,定義在類中方法外的位置。
(4)定義方法的分析步驟:①方法的需求②返回值③引數④方法名
(5)定義:有返回值型別的方法。
修飾符 返回值型別 方法名(引數列表){
實現功能的程式碼段;
return 返回值;}
(6)修飾符 : 訪問許可權修飾符,先預設定義為public static
(7)返回值型別 : 思考方法體程式碼執行完畢之後,是否需要得到一個結果或資料值,如果需要就定義為有返回值型別的方法,不需要就定義為沒有返回值型別的方法。
(8)結果的資料型別:基本資料型別|引用資料型別。
(9)方法名 : 根據方法名呼叫方法。
(10)識別符號: 符合識別符號的規則與規範。
(11)引數列表 : 可以定義引數,可以不定義引數,可以定義多個引數,資料型別 引數名1,資料型別 引數名2.... 相當於變數的宣告,在方法的定義或者實現過程中,是否存在未知的,不確定的,可能會改變的資料,如果存在定義在方法的引數列表。
(12)資料型別可以為任意資料型別{} : 方法體語句, 實現功能的程式碼段;
(13)return : ①提前結束方法②帶出返回值 (return);在一個有返回值型別的方法必須存在return關鍵字。
2、方法的呼叫:
(1)有返回值型別的方法
①普通呼叫:方法名(引數列表);有返回值型別的方法呼叫時候需要接收返回值。
②輸出呼叫:資料型別 變數名 = 方法名(引數列表)。
③賦值呼叫System.out.println(方法名(引數列表))。
(2)沒有返回值型別的方法
①普通呼叫
修飾符 void 方法名(引數列表){
(3)方法體語句;[return]}void :標識沒有返回值型別的方法②return :提前結束方法。
3、方法的引數:
①形式引數(形參) : 定義方法時()中的引數
②實際引數(實參) : 呼叫方法時()中的引數
形參與實參之間需要一一對應①個數一致②型別一致③不同型別的形參順序一致。
4、return 與 相容型別
(1)return 返回
①結束方法②在有返回值型別的方法中,return帶出返回值 return 返回值③返回給方法得到呼叫處④在有返回值型別的方法中必須存在return。
(2)不可達語句: 沒有執行時機
①能夠執行到return後面的程式碼②while--true for(;;){} 死迴圈後面的程式碼③continue後面④break後面⑤while-->false。
(2)相容型別:
①引數: 形參的型別>=實參的型別
②返回值: 接收返回值的變數型別>=方法的返回值型別>=return後面資料的型別,形參不賦值不存在預設值。
5、方法的過載
(1)前提: 當一個類中實現某個功能的時候,這個功能卻有不同的實現方式|需要接受不同的引數,可以讓這些相同功能實現的方法,構成方法的過載,就允許方法名相同。
(2)要求: 同一個類中的多個方法。
①方法名相同②引數列表不同或方法簽名不同(方法名+引數列表)
(3)區分方法的唯一標識①引數列表不同:②引數個數不同③引數的型別不④不同型別的引數順序不同。
(4)過載方法的呼叫
①方法名(實參);②有實參決定過載方法的呼叫。
(5)注意問題:①方法的過載與方法的修飾符無關關②方法的過載與方法的返回值型別無關關③方法的過載與引數的名字無關關。
總結: ①方法的過載只與方法簽名有關②方法就是封裝的一種體現③方法的過載就是多型的一種體現。
6、遞迴:
方法的自己呼叫自己
優點 : 合理的位置使用遞迴可以簡化程式碼結構
缺點 : 在結構複雜的情況,大量的佔用記憶體,有可能有降低效率,可能會遇到記憶體溢位
臨界條件: 停止自己呼叫自己的條件
遞迴前進段: 不停的自己呼叫自己,知道臨界條件之間這個過程
遞迴後退段: 從臨界條件開始,將結果返回給呼叫的上一層的過程
7、方法的記憶體分析
(1)棧中資料的特點:①進的後出後進先出②壓棧.③彈棧④一防法執行完畢 馬上彈棧釋放記憶體。
注意;不能在-個方法中使另-個方法中的區域性量 因為他們不屬於同-塊棧幀中。
(2)暫存器(本地方法棧)
①方法區|資料共享區: class檔案進入記憶體
②棧:方法執行期間產生的資料存在的位置
③堆:物件|陣列資料
(3)步驟:①把class檔案載入到記憶體方法區中②JVM呼叫主方法main,main方法壓棧執行,在棧中為main方法開闢棧幀(記憶體空間)③逐行執行main方法中的內容④呼叫getArea方法,壓棧執行⑤實參要為形參賦值⑥逐行執行getArea方法中的程式碼⑦返回值返回到方法的呼叫處⑧方法getArea0執完畢馬上彈棧釋放記憶體空間⑨繼續執行main方法中的內容⑩把返回值賦值給int型別的變數area。
⑪執行輸出語句輸出變數area的值35⑫main方法執行完畢馬上彈棧釋放記憶體間。