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

Java 基礎核心知識體系總結:從環境配置到集合框架

     編輯:Java 綜合教學

一、開發環境與基礎語法

1. 環境變量配置

JAVA_HOME=D:\Program Files\Java\jdk1.8.0_51
PATH=%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;...
CLASSPATH=.;%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar

注意:JDK 9+ 無需配置 CLASSPATH,模塊系統自動解析依賴。

2. 基本數據類型與字面量

類型位數默認值字面量示例
byte80(byte)100
short160(short)1000
int320100, 0x64, 0144
long640L100L, 0x64L
float320.0f3.14f, 1.2e-3f
double640.03.14, 1.2e-3
char16'\u0000''中', '\u4e2d'
boolean1falsetrue, false

3. 變量作用域與初始化

  • 成員變量(實例/靜態):有默認值,類加載/實例化時初始化。
  • 局部變量(方法內/參數):無默認值,使用前必須顯式初始化,否則編譯錯誤。

4. 運算符重點

  • 自增/自減:++i 先增後用,i++ 先用後增。
  • 字符串 +:任意一方為 String 則拼接,左至右結合。
  • 短路邏輯:&&、|| 遇到確定結果跳過後續運算。
  • 三目運算:condition ? expr1 : expr2,類型向上兼容。

二、流程控制與數組

1. 分支與循環

  • switch (JDK 7+ 支援 String),case 穿透需 break。
  • while 先判斷後執行;do-while 至少執行一次。
  • for 適用於已知次數;增強 for (for (E e : coll)) 底層為迭代器,遍歷過程中不可修改集合結構。

2. 數組操作


int[] arr = new int[10];          // 默認值 0
int[] arr = {1,3,5,7};            // 靜態初始化
System.arraycopy(src, 0, dest, 0, 5); // 高效複製
Arrays.copyOf(arr, 20);           // 擴容/截取,不足填充默認值
Arrays.sort(arr);                 // 雙軸快排,優於冒泡

三、面向對象核心

1. 類與對象

  • 類是模板,對象是實例(堆內存),引用變量指向對象(棧內存)。
  • this:當前對象引用,區分同名成員/局部變量,構造器鏈調用 this(...) 必須首行。
  • static:屬於類,方法區存儲一份,無 this,只能訪問靜態成員。
  • final:變量不可變(引用不變)、方法不可重寫、類不可繼承。static final 編譯期常量折疊優化。

2. 繼承與多態

  • 單繼承 extends,多實現 implements。
  • 子類構造器默認調用 super(),父類無無參構造則需顯式 super(args)。
  • 向上造型:父類引用指向子類對象,調用方法看對象類型(動態綁定),訪問字段看引用類型(靜態綁定)。
  • instanceof 安全向下造型前檢查。

3. 抽象類與接口

四、核心 API 常用類

1. 字符串處理

  • String:不可變,常量池優化,intern() 手動入池。
  • StringBuilder:非線程安全,高性能拼接(append/insert/delete/replace/reverse)。
  • StringBuffer:線程安全(方法加 synchronized),性能較低。

2. 正則表達式


// 常用元字符
\d  數字     \w  單詞字符    \s  空白
.   任意字符  *  0~n次      +  1~n次      ?  0~1次
{n} 精確n次   {n,} 至少n次   {n,m} n到m次
^ $ 行首尾   () 分組捕獲    |  或
// 核心方法
str.matches(regex)        // 整體匹配
str.split(regex)          // 分割
str.replaceAll(regex, r)  // 替換
Pattern.compile(regex).matcher(str) // 複雜提取:find()/group()/start()/end()

3. 包裝類與自動拆裝箱

  • 八大基本類型對應包裝類(Integer 等),繼承 Number 或 Object。
  • valueOf() 緩存 -128~127,推薦替代 new Integer()。
  • 自動拆裝箱:Integer i = 100; int n = i; 編譯器插入 valueOf/intValue。
  • BigDecimal:精確浮點運算(add/subtract/multiply/divide(scale, roundingMode))。

4. 日期時間 (JDK 8+ 推薦 java.time)


LocalDateTime.now();                    // 當前日期時間
DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
LocalDate.parse("2023-01-01", formatter);
Duration.between(start, end).toMillis(); // 間隔毫秒

5. 集合框架體系


Collection
├── List (有序、可重複)  → ArrayList(查詢快) / LinkedList(增刪快、雙端隊列/棧)
├── Set (無序、不可重複) → HashSet / LinkedHashSet(插入序) / TreeSet(有序)
└── Queue (隊列)         → PriorityQueue / ArrayDeque(雙端)

Map (鍵值對)
├── HashMap (無序、鍵不可重複、允許 null key/value)
├── LinkedHashMap (插入序/訪問序)
├── TreeMap (鍵自然序/比較器序、不允許 null key)
└── ConcurrentHashMap (高並發、分段鎖/CAS)

核心操作

  • 遍歷:Iterator(可刪除)、增強 for(只讀)、forEach (JDK 8)。
  • 排序:Collections.sort(list) (自然序) 或 list.sort(comparator) (定制序)。
  • 轉換:collection.toArray()、Arrays.asList(arr) (固定長度)、new ArrayList<>(list) (可變)。

五、異常處理機制

體系結構


Throwable
├── Error (系統級,不可恢復:OOM, StackOverflow)
└── Exception
    ├── RuntimeException (非檢查:NPE, IndexOOB, ClassCast, Arithmetic)
    └── 其他 (檢查异常:IOException, ParseException, SQLException)

處理模式


try {
    risky();
} catch (SpecificException e) {
    handle();
} catch (Exception e) { // 父類放後
    log();
} finally {
    cleanup(); // 必執行(除 System.exit/崩潰)
}
  • throws 聲明拋出管道,調用者必須捕獲或繼續拋出。
  • 自定義異常繼承 Exception (檢查) 或 RuntimeException (非檢查)。

六、IO 流體系

分類

特性抽象類接口 (JDK 8+)
關鍵字abstract classinterface
方法抽象 + 普通 + 默認抽象 + default + static + private
字段任意默認 public static final
構造器有(供子類調用)無
多實現單繼承多實現
方向字節流 (二進制)字符流 (文本)
輸入InputStream → FileInputStream, BufferedInputStream, DataInputStream, ObjectInputStreamReader → FileReader, BufferedReader, InputStreamReader(轉換流)
輸出OutputStream → FileOutputStream, BufferedOutputStream, DataOutputStream, ObjectOutputStreamWriter → FileWriter, BufferedWriter, OutputStreamWriter(轉換流)

關鍵點

  • 字節流處理圖片/視頻/序列化;字符流處理文本(編碼轉換:getBytes(charset)/new String(bytes, charset))。
  • 緩衝流 (Buffered*) 內部維護 8KB 數組,大幅提升單字節/行讀寫效率。
  • try-with-resources (JDK 7+) 自動關閉實現 AutoCloseable 的資源。
  • 序列化:實現 Serializable,serialVersionUID 版本控制,transient/static 不序列化。

七、多線程基礎

創建方式

  1. 繼承 Thread 重寫 run()。
  2. 實現 Runnable 傳入 Thread 構造器(推薦,解耦任務與線程)。
  3. 線程池 ExecutorService 提交 Runnable/Callable。

同步機制

  • synchronized:對象鎖/類鎖,可重入,非公平,JVM 優化(偏向鎖→輕量級鎖→重量級鎖)。
  • Lock:顯式鎖,支援中斷/超時/公平/多條件。
  • volatile:可見性+有序性,不保證原子性(i++ 非原子)。
  • 線程通信:wait/notify/notifyAll (需在同步塊中)、Condition.await/signal。

線程池


ExecutorService es = Executors.newFixedThreadPool(10); // 固定大小
es.execute(() -> {});        // 無返回值
Future<Integer> f = es.submit(() -> 1); // 有返回值
f.get(3, TimeUnit.SECONDS);  // 阻塞獲取結果,支援超時
es.shutdown();               // 優雅關閉

八、常用工具類

  • Objects:requireNonNull/equals/hashCode/toString 防空指針。
  • Collections:sort/reverse/shuffle/synchronizedList/unmodifiableList。
  • Arrays:sort/binarySearch/copyOf/toString/deepEquals。
  • Math/Random/ThreadLocalRandom:數學運算、隨機數。

提示:本文匯總 Java SE 核心知識點,適合面試複習、知識查漏補缺。實際開發中請結合 Effective Java、JVM 規範、官方 API 文檔深入掌握。

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