Java 核心語法與 Swing 佈局、集合工具、正則表達式綜合筆記,覆蓋佈局管理器選型、抽象類與接口區別、繼承多態規則、正則語法速查、Arrays 工具類常用操作。
| 管理器 | 特點 | 適用場景 |
|---|---|---|
FlowLayout | 左到右、上到下順序排列,換行自動換行 | 簡單表單、工具欄、按鈕組 |
GridLayout | 指定行列數,組件等分網格,大小一致 | 計算器鍵盤、棋盤、表格式表單 |
BorderLayout | 五大區域,東西區域僅水平拉伸,南北僅垂直拉伸,中間雙向填充 | 主窗口結構:頂部導航、左側菜單、中間內容、底部狀態欄 |
進階:GridBagLayout(最靈活、最複雜)、BoxLayout、CardLayout(向導式界面)、GroupLayout(IDE 可視化設計首選)。
main 為 static,直接調用的其他方法必須也是 static。main(String[] args):args[0]~args[n] 為命令行參數,args.length 獲取個數。BigInteger bi = new BigInteger("2"),字符串構造器參數必須帶引號。==:比較引用地址(基本類型比值)。equals():比較業務語義相等,需類覆寫。private:僅本類可見protected:同包 + 子類可見public:全局可見default(包私有):僅同包可見int → Integer, boolean → Boolean,自動裝箱/拆箱(Java 5+)。| 特性 | 抽象類 | 接口 |
|---|---|---|
| 關鍵字 | abstract class | interface |
| 方法 | 可有抽象方法、具體方法、構造器 | 隱式 public abstract(Java 8 前),Java 8+ 可有 default/static 方法 |
| 字段 | 任意修飾符 | 隱式 public static final(常量) |
| 繼承/實現 | extends(單繼承) | implements(多實現) |
| 實例化 | 不可直接 new,只能 new 子類 | 不可實例化,Java 8+ 可通過默認方法提供實現 |
| 設計意圖 | 「是一種」關係,共享代碼與狀態 | 「能做什麼」契約,定義行為規範 |
protected → 子 public)。clone(), finalize(), equals(), toString() 等通用方法。instanceof 判斷避免 ClassCastException。public static int add(int... a) 等價 int[] a,調用可傳 0-N 個參數。| 語法 | 含義 | 示例匹配 |
|---|---|---|
A? | A 出現 0 或 1 次 | "", "A" |
A* | A 出現 0 或多次 | "", "A", "AAA" |
A+ | A 出現 1 或多次 | "A", "AAA" |
A{2} | A 正好 2 次 | "AA" |
A{2,} | A 至少 2 次 | "AA", "AAAA" |
A{2,4} | A 出現 2-4 次 | "AA", "AAA", "AAAA" |
[abc] | a 或 b 或 c | "a", "b", "c" |
[^abc] | 非 a/b/c | "d", "1", "@" |
[a-r] | a 到 r 任一字符 | "m", "c" |
[a-zA-Z] | 任意英文字母 | "Z", "q" |
[a-c[e-g]] | 並集:a-c 或 e-g | "b", "f" |
[a-o&&[def]] | 交集:a-o 中的 d/e/f | "d", "e", "f" |
Java 代碼中使用:String regex = "\\d{3}-\\d{8}"; // 雙重轉義,Pattern.compile(regex).matcher(str).matches()。
// 初始化
int[] arr = new int[] {1, 22, 3};
// 排序
Arrays.sort(arr); // 全量升序
Arrays.sort(arr, from, to); // 區間排序
// 填充
Arrays.fill(arr, 99); // 全量填 99
Arrays.fill(arr, from, to, 99); // 區間填 99
// 複制
int[] copy = Arrays.copyOf(arr, 5); // 複制前 5 個(不足補 0/截斷)
int[] copy = Arrays.copyOfRange(arr, 1, 4); // 複制 [1,4) 區間
// 查找(前提:數組已排序)
int idx = Arrays.binarySearch(arr, key); // 全量查找
int idx = Arrays.binarySearch(arr, from, to, key); // 區間查找
// 返回索引(≥0 找到),未找到返回 (-(插入點) - 1)
String text = "聯系電話:138-1234-5678,郵箱:test@example.com";
// 1. 提取手機號
Pattern phonePat = Pattern.compile("1[3-9]\\d{9}");
Matcher m = phonePat.matcher(text);
while (m.find()) System.out.println(m.group()); // 13812345678
// 2. 分割
String[] parts = text.split("[,。:]"); // 多字符分割
// 3. 替換
String masked = text.replaceAll("\\d{4}(?=\\d{4})", "****"); // 手機中間四位掩碼
這些語法是 Java 日常開發的「詞彙庫」,建議打印速查表貼在工位,遇到不熟悉的正則/Arrays 方法快速查閱,漸漸內化為直覺。