基礎程式設計(Java)· CH7
一次裝很多筆資料 · 導覽地圖
完整內容看 PDF 講義,動手走訪與試跑看 index。
為什麼要陣列
三特性:同型別、固定長度、連續編號。索引從 0 到 length-1。
宣告與配置
int[] a = new int[5]; // 5 格,預設值全 0
int[] b = {10, 20, 30, 40, 50}; // 初始化清單,長度自動為 5
最後一格 a[a.length-1];a[5](長度 5)會越界。
走訪型一
for (int i = 0; i < a.length; i++) // 用 < 不是 <=
System.out.println(a[i]);
a.length 是欄位、沒括號。需要索引或要改元素值時用它。
走訪型二
for (int x : a) // x 依序拿到每個元素「值」
System.out.println(x);
拿不到索引,也改不到陣列內容(x 是副本)。只讀時優先用。
三招演算法
int total = 0; for (int x : a) total += x; // 求和
int max = a[0]; for (int x : a) if (x>max) max=x; // 找最大
int cnt = 0; for (int x : a) if (x>4) cnt++; // 計次
找最大 max 初值設 a[0],不要設 0(全負數會錯)。
陣列是物件
int[] b = a; // b 和 a 指向同一個陣列(沒複製)
b[0] = 99; // a[0] 也跟著變 99
方法內改元素,呼叫端看得到(和 CH6 值傳遞不同)。
多維
int[][] m = {{1,2,3},{4,5,6}};
m[1][2]; // = 6(先列後行)
m.length; // 列數 2 m[0].length; // 行數 3
m[r] 是一個一維陣列,m[r][c] 才是元素。
可變大小
ArrayList<String> list = new ArrayList<>();
list.add("Amy"); // 加到尾端
list.get(0); // 取第 0 個
list.size(); // 個數(方法、有括號)
list.remove("Amy");
動態大小、只裝物件(ArrayList<Integer>);個數用 size() 不是 length。
選型
.length
ArrayList.size()
事先知道筆數、不會增刪 → 陣列;會增刪、筆數不定 → ArrayList。
收尾兩個語法
static double average(double... nums) { // 收 0~N 個,方法內是 double[]
double t = 0; for (double d : nums) t += d;
return t / nums.length; // 用 .length 取個數
}
public static void main(String[] args) { // 執行 java Demo 5 0 4
int n = Integer.parseInt(args[0]); // args 是 String[],要自己轉
}
varargs:型別... 在方法內當陣列、只能放最後一個。命令列引數:進 main(String[] args)、一律字串、用 args.length 取個數。
接下來