首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

Java 入門教學 (11):陣列 - 固定長度的同類型資料容器

     編輯:Java 相關知識

為什麼需要陣列?

學生最多選 3 門課。用 3 個獨立變數 course1, course2, course3 會導致:無法迴圈處理、無法動態知道已選幾門、程式碼重複。陣列將多個同類型變數打包成單一物件,支援索引存取與 length 查詢。

陣列三大特性

  1. 同類型:int[] 只能放 int,Course[] 只能放 Course (或子類)。
  2. 固定長度:建立時指定長度,終身不可變。
  3. 參考型別:int[] 本身是物件 (繼承 Object),變數存的是記憶體位址。

宣告與建立

// 推薦風格:型別[] 變數名
int[] scores;
Course[] courses;

// 建立 (指定長度)
scores = new int[5];           // {0,0,0,0,0}
courses = new Course[3];       // {null,null,null}

// 宣告同時給初值 (長度由元素個數決定)
int[] lucky = {7, 3, 9, 1};
String[] names = new String[] {"Alice", "Bob"}; // 匿名陣列

多維陣列

// 2D 陣列:3 列,每列長度不同 (鋸齒陣列)
int[][] matrix = new int[3][];
matrix[0] = new int[4];
matrix[1] = new int[5];
matrix[2] = new int[3];
matrix[0][0] = 10; // 存取

長度與遍歷

int[] arr = {10, 20, 30};

// 1. 傳統 for (需索引)
for (int i = 0; i < arr.length; i++) {
    System.out.println(arr[i]);
}

// 2. 增強 for (foreach) - 僅讀取,不需索引
for (int v : arr) {
    System.out.println(v);
}

// 3. Java 8 Stream (函數式)
Arrays.stream(arr).forEach(System.out::println);

實戰:學生選課系統 (1 對 多關聯)

public class Student {
    private String name;
    private Course[] courses = new Course[3]; // 固定容量 3
    private int count = 0;                    // 實際已選門數

    public Student(String name) { this.name = name; }

    public void chooseCourse(Course c) {
        if (count < courses.length) {
            courses[count++] = c;
            System.out.println("已選:" + c.getTitle());
        } else {
            System.out.println("最多選 3 門!");
        }
    }

    public Course[] getCourses() { return courses; } // 回傳整個陣列 (含 null)
    public int getCount() { return count; }
}

陣列 vs ArrayList:如何選?

特性陣列ArrayList
長度固定動態擴容
基本型別直接支援 int[]需包裝類 Integer
效能極高 (連續記憶體)略低 (擴容複製)
API 豐富度低 (只有 length)高 (add/remove/contains...)
適用場景長度固定、效能敏感、基本型別長度不定、頻繁增刪、物件集合

常見新手錯誤

  1. arr.length() → 錯,陣列是 length 屬性,非方法。
  2. new int[3] = {1,2,3} → 錯,初始化列表只能用於宣告時。
  3. 存取 arr[3] (長度 3) → ArrayIndexOutOfBoundsException,索引 0~length-1。
  4. 增強 for 修改元素 for (int v : arr) v = 99; → 無效,v 是複製值。

總結

  • 陣列 = 固定長度、同類型、參考型別容器。
  • 宣告 型別[] 變數,建立 new 型別[長度] 或 {...}。
  • 遍歷用 for (int i=0; i 或 for (型別 v : arr)。
  • 長度不定、頻繁增刪請改用 ArrayList (下一課介紹)。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved