方法的宣告 (declaration) 與定義包含
- 修飾子 (modifier) ,如 private 或 public ,也可以不加
- 回傳值 (return value) 的資料型態 (data type)
- 識別字 (identifier) 名稱
- 小括弧中的參數列 (parameter list) ,也可以留空,也就是不提供任何參數 (parameter)
- 大括弧圍起來的主體
形式如下
return_type method_name(parameter list) { //method_body }
做一些事情的方法沒有計算結果,因此不需要有回傳值,沒有回傳值的方法要用關鍵字 (keyword) 中的 void 宣告,也就是 return_type 的位置放入 void 。
進行計算工作或有需要回傳物件的方法可以有回傳值,這是說計算完成後可以將計算結果或物件回傳給呼叫方,這時需要用到關鍵字中的 return ,作為回傳數值或物件之用。
有回傳值的方法, return 陳述通常放在方法主體的最後面,也就是左大括弧之前,例如
class ReturnDemo1 { int add(int a, int b) { int c; c = a + b; return c; } public static void main(String[] args) { ReturnDemo1 v = new ReturnDemo1(); int result = v.add(11, 22); System.out.println(result); } } /* 《程式語言教學誌》的範例程式 http://pydoing.blogspot.com/ 檔名:ReturnDemo1.java 功能:示範物件導向的基本觀念 作者:張凱慶 時間:西元 2010 年 10 月 */
編譯後執行,結果如下
第 2 行宣告了一個 add() 方法,回傳值型態為 int ,需要兩個參數,型態都是 int
int add(int a, int b) { int c; c = a + b; return c; }
第 3 行在 add() 中宣告了 int 型態的變數 (variable) c ,這是 add() 方法中的區域變數 (local method) ,僅在方法中有效,離開方法的範圍,識別字 c 可能是其他的名稱。
第 4 行將兩個參數相加,結果指派給 c ,最後回傳 c 。
return 陳述也可以放在方法需要回傳值的地方,不一定會在方法的最後面,例如以下計算費博納西數 (fibonacci number) 的方法就用了兩個 return 陳述
class ReturnDemo2 { int fibonacci(int n) { if (n == 0 || n == 1) { return 1; } else { return fibonacci(n - 1) + fibonacci(n - 2); } } public static void main(String[] args) { ReturnDemo2 v = new ReturnDemo2(); int n = 10; while (n > 0) { System.out.println(v.fibonacci(n)); n--; } } } /* 《程式語言教學誌》的範例程式 http://pydoing.blogspot.com/ 檔名:ReturnDemo2.java 功能:示範物件導向的基本觀念 作者:張凱慶 時間:西元 2010 年 10 月 */
編譯後執行,結果如下
fibonacci() 的設計方法在數學上稱為遞迴函數 (recursive function) ,也就是函數 (function) 不斷的呼叫 (call) 函數本身來解決數學問題,然而 Java 中沒有函數只有方法,因此以相同模式來設計方法。
中英文術語對照 | |
---|---|
類別 | class |
方法 | method |
物件 | object |
運算式 | expression |
宣告 | declaration |
修飾子 | modifier |
回傳值 | return value |
資料型態 | data type |
識別字 | identifier |
參數列 | parameter list |
參數 | parameter |
關鍵字 | keyword |
變數 | variable |
區域變數 | local method |
費博納西數 | fibonacci number |
遞迴函數 | recursive function |
函數 | function |
呼叫 | call |
1 則留言:
「 這是 add() 方法中的區域變數 (local method) 」
這個英文寫錯了喔!是 Local Variable 才對吧~
張貼留言