基礎程式設計(Java)· CH6
宣告 · static · 呼叫堆疊 · 多載 · 值傳遞 · 套件/亂數/enum · 導覽地圖
完整內容看 PDF 講義,動手追蹤與試跑看 index。
為什麼用方法
方法=有名字、可重複呼叫、完成單一工作的程式碼單位。
宣告
public static int square(int x) {
return x * x;
}
// 修飾子 回傳型別 名稱(參數列) { 方法體 }
參數=宣告括號裡的變數;引數=呼叫時實際傳入的值。不回傳值用 void。
static
double r = Math.sqrt(16.0); // 類名.方法
int big = Math.max(3, 7); // 不需 new Math()
static 屬類別本身;main 是 static,裡面只能直接呼叫 static 方法(否則先 new 物件)。
呼叫堆疊
最後呼叫的最先返回;每框=一次呼叫的參數與區域變數。疊太深 → StackOverflowError。
多載
int square(int x) { return x * x; } // A
double square(double x) { return x * x; } // B
square(5); // → A,得 25
square(2.5); // → B,得 6.25
參數列(數量/型別/順序)不同才算多載;只改回傳型別不行。
傳參數
void addOne(int n){ n = n + 1; } // 改的是拷貝
int a = 5; addOne(a);
// a 仍是 5(基本型別動不到呼叫端)
物件傳的是參照值的拷貝:可改內容(如陣列元素),但換新物件不影響呼叫端。
套件 · 亂數 · enum
import java.security.SecureRandom;
SecureRandom rand = new SecureRandom();
int face = 1 + rand.nextInt(6); // 擲骰 1~6
private enum Status { CONTINUE, WON, LOST }
Status s = Status.WON; // 比較用 ==
套件用 import 找類別(java.lang 自動匯入);亂數 起點 + nextInt(寬度);enum 取代魔術數字。
範疇
區域變數沒有預設值,用前須先賦值(實例欄位才有預設值)。
接下來