Java 入門核心知識體系(一)
本文面向 Java 初學者,系統梳理從開發環境搭建到核心語法、面向對象基礎、UML 建模、數組操作及 Object 類常用方法的完整知識體系,配合代碼範例與圖表,打牢進階基礎。
一、開發工具與環境配置
EditPlus + JDK 整合
| 工具 | 參數設定 | 初始目錄 |
| javac 編譯 | -d . "$(FileName)" | $(FileDir) |
| java 執行 | "$(FileNameNoExt)" | $(FileDir) |
| javap 反編譯 | "$(FileNameNoExt)" | $(FileDir) |
二、HelloWorld 解剖與核心概念
public class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello World!");
}
}
- 關鍵字:
public、class、static、void 等均小寫。
- 命名規範:類名帕斯卡(HelloWorld)、方法/變數駝峰(main、args)、常量全大寫(MAX_VALUE)。
- JDK vs JRE:JDK = JRE + 開發工具;JRE = JVM + 類庫。
- 字節碼:
.class 文件,JVM 指令集,跨平台核心;二進制,含操作碼與操作數。
- 數據單位:8 bit = 1 Byte;1024 進制(KB/MB/GB/TB)。
三、數據類型與轉換
基本型別(8 種)
| 類別 | 類型 | 位數 | 預設值 | 範圍/說明 |
| 整數 | byte | 8 | 0 | -128~127 |
| short | 16 | 0 | -32768~32767 |
| int | 32 | 0 | -2^31~2^31-1 |
| long | 64 | 0L | -2^63~2^63-1 |
| 浮點 | float | 32 | 0.0f | 單精度,尾數 6~7 位 |
| double | 64 | 0.0 | 雙精度,尾數 15 位 |
| 字符 | char | 16 | '\u0000' | Unicode,0~65535 |
| 布爾 | boolean | 1~8 | false | true/false |
型別轉換
- 自動(隱式):
byte → short/char → int → long → float → double(容量由小到大)。
- 強制(顯式):
(targetType) value,可能損失精度/溢出。
轉義字符
\b 退格 \n 換行 \r 回車 \' 單引號 \" 雙引號 \\ 反斜槓
運算符優先級(高→低)
[] () . // 最高
! ~ ++ -- + - // 一元
* / % // 算術
+ - // 算術/字串連接
<< >> >>> // 移位
< <= > >= instanceof
== != // 比較
& // 位與
^ // 位異或
| // 位或
&& // 邏輯與(短路)
|| // 邏輯或(短路)
?: // 三元
= += -= *= /= %= &= ^= |= <<= >>= >>>= // 賦值(最低)
四、流程控制語句
分支
if (score >= 60) { pass(); }
else if (score >= 40) { makeup(); }
else { fail(); }
switch (month) {
case 3: case 4: case 5: System.out.println("春"); break;
case 6: case 7: case 8: System.out.println("夏"); break;
default: System.out.println("其他季節");
}
迴圈
// for
for (int i = 1, sum = 0; i <= 100; i++) sum += i;
// while
int i = 1; while (i <= 100) { sum += i; i++; }
// do-while(至少執行一次)
do { sum += i; i++; } while (i <= 100);
// 增強 for(遍歷陣列/集合)
for (int n : arr) System.out.println(n);
五、方法與遞歸
方法聲明
[修飾符] 返回類型 方法名(參數列表) {
// 方法體
return 返回值; // void 可省略
}
- 參數傳遞:基本型別傳值(副本)、引用型別傳引用(地址)。
- 調用方式:靜態方法
ClassName.method();實例方法 obj.method()。
遞歸三要素
- 有終止條件(出口)。
- 每次遞歸規模縮小。
- 子問題與原問題同構。
int factorial(int n) {
if (n <= 1) return 1; // 出口
return n * factorial(n - 1);
}
六、面向對象基礎
三大特性
| 特性 | 核心含義 | 關鍵字/機制 |
| 封裝 | 隱藏內部細節,暴露公共介面 | private + getter/setter、package |
| 繼承 | 子類復用父類結構與行為 | extends、super、單繼承 |
| 多態 | 同一操作作用不同對象產生不同行為 | Override(動態綁定)、Overload(靜態綁定) |
類與對象
- 類是模板,對象是實例;
ClassName obj = new ClassName();
- 建構子:同類名、無返回類型、
new 時自動調用;可重載。
JavaBean 規範
- public 類,public 無參建構子。
- 屬性 private,提供 getXxx()/setXxx()。
- 實作
Serializable(可選)。
七、UML 統一建模語言
類圖關係
| 關係 | 箭頭 | 含義 | 代碼體現 |
| 泛化 | 實線空心三角形 → 父類 | is-a(繼承) | extends |
| 實現 | 虛線空心三角形 → 介面 | 實作介面 | implements |
| 關聯 | 實線箭頭 | has-a(成員變數) | 欄位引用 |
| 聚合 | 實線空心菱形 → 整體 | 整體-部分,生命週期獨立 | 集合/引用 |
| 組合 | 實線實心菱形 → 整體 | 整體-部分,生命週期綁定 | new 於建構子 |
| 依賴 | 虛線箭頭 | use-a(局部變數/參數) | 方法參數/局部變數 |
九大圖
- 用例圖、類圖、對象圖、循序圖、協作圖、狀態圖、活動圖、組件圖、部署圖。
八、數組操作
一維陣列
int[] arr = new int[5]; // 宣告並分配
int[] arr2 = {1, 2, 3, 4, 5}; // 靜態初始化
for (int i = 0; i < arr.length; i++) arr[i] = i * 2;
for (int n : arr) System.out.print(n + " ");
二維陣列
int[][] matrix = new int[3][4]; // 3 行 4 列
int[][] m2 = {{1,2}, {3,4}, {5,6}};
for (int[] row : matrix) for (int v : row) System.out.print(v + " ");
排序與工具
Arrays.sort(arr); // 升序
Arrays.binarySearch(arr, 3); // 查找(需有序)
Arrays.toString(arr); // 格式化輸出
System.arraycopy(src, 0, dest, 0, 3); // 高效複製
九、Object 類核心方法
| 方法 | 用途 | 注意事項 |
| toString() | 返回對象字串表示 | 建議覆寫,預設 ClassName@hashCode |
| equals(Object) | 比較邏輯相等 | 須滿足自反/對稱/傳遞/一致/非空;常配合 hashCode |
| hashCode() | 返回雜湊碼 | equals 相等則 hashCode 必相等;用於 HashMap/HashSet |
| getClass() | 獲取運行時 Class 物件 | 反射入口,不可覆寫 |
| clone() | 淺拷貝創建新對象 | 需實作 Cloneable,否則拋 CloneNotSupportedException |
| finalize() | GC 前調用 | 已棄用(JDK9),不可靠,建議 try-with-resources |
clone 範例
class Person implements Cloneable {
int age;
@Override protected Object clone() throws CloneNotSupportedException {
return super.clone(); // 淺拷貝
}
}
Person p1 = new Person(); p1.age = 20;
Person p2 = (Person) p1.clone(); // p2.age == 20,p1 != p2
- 上一篇文章: Java 設計模式精講:代理模式(靜態、JDK 動態、CGLIB)原理與實戰
- 下一篇文章: 深入解析 Java 方法調用:重載與重寫的 JVM 底層原理
Copyright ©
程式碼之家 All Rights Reserved