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

Java 學習筆記全景圖:從環境搭建到核心語法、集合、異常、IO、多線程、JDBC、反射完整知識體系

     編輯:Java 綜合教學

前言

本文系統整理 Java SE 核心知識體系,涵蓋開發環境、基礎語法、面向對象、集合框架、異常處理、IO 流、多線程、JDBC、反射、常用工具類等模塊,作為從入門到進階的結構化速查手冊。

一、開發環境搭建

組件說明關鍵配置
JDKJava Development Kit,含編譯器、JVM、類庫JAVA_HOME、PATH+=bin、CLASSPATH=.;lib
JREJava Runtime Environment,JDK 子集,僅運行生產部署僅需 JRE
JVMJava Virtual Machine,字節碼解釋執行堆/棧/方法區/程序計數器/本地方法棧
IDEEclipse / IntelliJ IDEA / NetBeans推薦 IDEA,Maven/Git/Gradle 集成

二、基礎語法核心

1. 標識符規則

  • 字母、數字、_、$ 組成,數字不能開頭
  • 區分大小寫,不可為關鍵字/保留字
  • 駝峰命名:userName、MAX_COUNT、UserService

2. 八大基本類型

類型位數默認值包裝類
byte80Byte
short160Short
int320Integer
long640LLong
float320.0fFloat
double640.0Double
char16'\u0000'Character
boolean1falseBoolean

3. 類型轉換

  • 自動轉換(隱式):小範圍 → 大範圍 int → double
  • 強制轉換(顯式):大範圍 → 小範圍 (int) 3.99 → 3(截斷非四捨五入)
  • 包裝類 ↔ 基本類型:自動裝箱/拆箱 Integer i = 10; int n = i;
  • 字符串轉換:String.valueOf()、Integer.parseInt()、Double.valueOf()

4. 運算符優先級

單目 > 算術 > 移位 > 比較 > 邏輯 > 三元 > 賦值

三、面向對象三大特性

1. 封裝

  • private 字段 + public getter/setter
  • 構造器初始化,this 區分同名字段

2. 繼承

  • extends 單繼承,super 調用父構造/方法
  • 初始化順序:父靜態 → 子靜態 → 父實例 → 父構造 → 子實例 → 子構造
  • final 類/方法/字段禁止繼承/重寫/修改

3. 多態

  • 引用多態:Animal a = new Cat();
  • 方法多態:重寫 @Override,運行期動態分派
  • 向上轉型安全,向下轉型需 instanceof 守衛

4. 抽象類 vs 接口

特性抽象類接口
關鍵字abstract classinterface
方法可有抽象/具體/靜態/私有默認 public abstract,JDK8+ default/static/private
字段任意默認 public static final
構造器有無
繼承/實現單繼承多實現

四、核心 API 常用類

1. String 不可變字符序列

  • == 比引用,equals() 比內容
  • 常用:substring、indexOf、split、replace、format
  • 拼接用 StringBuilder(非線程安全)或 StringBuffer(線程安全)

2. 包裝類與基本類型轉換

// 基本 → 包裝
Integer i1 = 100;           // 自動裝箱
Integer i2 = Integer.valueOf(100);

// 包裝 → 基本
int n1 = i1;                // 自動拆箱
int n2 = i1.intValue();

// 字符串 ↔ 基本/包裝
String s = String.valueOf(100);
int n3 = Integer.parseInt("100");
double d = Double.parseDouble("3.14");

3. 日期時間 (JDK 8+ java.time)

LocalDate date = LocalDate.now();
LocalDateTime dt = LocalDateTime.now();
Instant now = Instant.now();
DateTimeFormatter fmt = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
String str = dt.format(fmt);

五、集合框架全景

Collection
├── List (有序、可重複)
│   ├── ArrayList (數組、查詢快)
│   ├── LinkedList (鏈表、增刪快、可作隊列/棧)
│   └── Vector (線程安全、舊)
├── Set (無序、不可重複)
│   ├── HashSet (HashMap、無序)
│   ├── LinkedHashSet (有序、插入序)
│   └── TreeSet (紅黑樹、自然序/比較器序)
└── Queue (隊列)
    ├── PriorityQueue (優先級)
    ├── ArrayDeque (雙端隊列、棧)
    └── LinkedList (也實現 Queue)

Map
├── HashMap (數組+鏈表/紅黑樹、非線程安全)
├── LinkedHashMap (有序、插入/訪問序)
├── TreeMap (紅黑樹、Key 有序)
├── Hashtable (線程安全、舊)
└── ConcurrentHashMap (分段鎖/CAS、高並發)

六、異常處理體系

Throwable
├── Error (嚴重、不可恢復:OOM, StackOverflow)
└── Exception (可捕獲處理)
    ├── RuntimeException (非受檢:NPE, ClassCast, IndexOutOfBounds)
    └── 受檢異常 (IOException, SQLException, ClassNotFoundException)
  • try-catch-finally / try-with-resources (JDK 7+ 自動關閉)
  • throw 拋出,throws 聲明
  • 自定義異常繼承 RuntimeException 或 Exception

七、IO 流體系

分類字節流字符流
輸入InputStream → FileInputStream, ByteArrayInputStreamReader → FileReader, StringReader
輸出OutputStream → FileOutputStream, ByteArrayOutputStreamWriter → FileWriter, StringWriter
轉換InputStreamReader, OutputStreamWriter (指定 charset)
緩衝BufferedInputStream, BufferedReader (高效讀行)
對象序列化ObjectOutputStream, ObjectInputStream (實現 Serializable)

八、多線程核心

  • 創建:extends Thread / implements Runnable / Callable+Future / 線程池
  • 同步:synchronized / Lock / volatile / ThreadLocal / 原子類
  • 協作:wait/notify / Condition / CountDownLatch / CyclicBarrier / Semaphore
  • 線程池:Executors / ThreadPoolExecutor 七大參數、拒絕策略
  • JUC:ConcurrentHashMap, CopyOnWriteArrayList, BlockingQueue, CompletableFuture

九、JDBC 標準流程

1. 加載驅動: Class.forName("com.mysql.cj.jdbc.Driver")
2. 獲取連接: DriverManager.getConnection(url, user, pwd)
3. 預編譯: PreparedStatement ps = conn.prepareStatement(sql)
4. 設置參數: ps.setInt(1, id); ps.setString(2, name);
5. 執行: ResultSet rs = ps.executeQuery() / ps.executeUpdate()
6. 處理結果: while(rs.next()) { ... }
7. 釋放資源: try-with-resources 自動關閉 rs, ps, conn

十、反射機制

Class clazz = Class.forName("com.example.User");
Constructor ctor = clazz.getConstructor(String.class, int.class);
User user = (User) ctor.newInstance("Alice", 25);
Method method = clazz.getMethod("setName", String.class);
method.invoke(user, "Bob");
Field field = clazz.getDeclaredField("age");
field.setAccessible(true);
field.setInt(user, 26);

十一、學習方法論

  1. 多練:敲代碼 > 看視頻,肌肉記憶 API
  2. 多問:StackOverflow、技術社群、源碼閱讀
  3. 多調試:Debug 斷點、評估表達式、堆棧分析
  4. 多總結:知識點卡片、周/月複盤、博客輸出倒逼輸入
  5. 項目驅動:小項目串聯知識點(如:學生管理、電商簡易版)

總結

Java SE 知識體系龐大但脈絡清晰:語法基石 → OO 思想 → 核心 API → 異常/IO/多線程/JDBC/反射 → 框架生態。建立結構化知識圖譜,配合項目實戰與持續複盤,是從菜鳥進階為資深工程師的必經之路。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved