方法的宣告 (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 才對吧~
張貼留言