記錄 Java 學習初期對陣列宣告、記憶體配置、方法傳遞機制的理解。
// 1. 宣告陣列變數(參考型別,預設 null) int[] scores = null; // 推薦寫法:型別[] 變數名 int scores2[] = null; // C 風格寫法,不推薦 // 2. 配置記憶體空間(new 建立陣列物件) scores = new int[3]; // 長度 3,元素預設值 0 // 合併寫法 int[] scores = new int[3];
記憶體圖解:
棧區:scores 變數(引用)
堆區:int[3] 物件(含 length 屬性、3 個 int 槽位)
public class ArrayDemo {
public static void main(String[] args) {
int[] arr = {1, 2, 3};
modify(arr); // 傳遞引用副本
System.out.println(arr[0]); // 輸出 99,原陣列被修改
}
static void modify(int[] a) {
a[0] = 99; // 透過引用修改堆區物件
// a = new int[5]; // 這裡重新指向新物件,不影響外部 arr
}
}
static int[] createArray(int n) {
int[] result = new int[n];
for (int i = 0; i < n; i++) result[i] = i * 2;
return result; // 返回引用
}
public class CreateArray2 {
public static void main(String[] args) {
int[] scores = new int[3];
int[] speeds = {12, 35};
for (int i = 0; i < 3; i++) scores[i] = i * 2 + 1;
for (int i = 0; i < 3; i++) System.out.println("scores[" + i + "]=" + scores[i]);
System.out.println("length: " + scores.length);
for (int v : speeds) System.out.println("Speed: " + v);
}
}
new 在堆區建立物件,變數存引用。ArrayList。arr.length 是屬性(非方法),String.length() 是方法,易混淆。