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

Java 核心知識點大全:從基礎語法到進階特性系統總結

     編輯:Java 相關知識

前言

本文系統梳理 Java 開發中必須掌握的核心知識點,涵蓋基本類型、語法特性、面向對象機制、集合框架基礎、異常處理、內部類、不可變對象設計等 22 個關鍵領域,適合面試複習與日常查漏補缺。

一、基本數據類型與字面量

類型大小包裝類
byte1 字節Byte
short2 字節Short
int4 字節Integer
long8 字節Long
char2 字節 (UTF-16)Character
float4 字節Float
double8 字節Double
boolean1 字節 (JVM 實現相關)Boolean

Java 7+ 新特性

  • 二進制字面量:0b1010 或 0B1010
  • 數值字面量下劃線分隔:1_000_000

特殊浮點值

  • 正無窮:1.0 / 0.0
  • 負無窮:-1.0 / 0.0
  • NaN:0.0 / 0.0 或 Math.sqrt(-1)

二、字符串與常量池

  • char 為 16 位 Unicode,格式 '\uXXXX'
  • 字符串常量池:編譯期常量自動入池,String a = "java"; String b = "java"; a == b // true
  • new String() 創建新對象,需 intern() 手動入池
  • Integer -128 到 127 緩存(Integer.valueOf())

三、面向對象核心機制

1. 多態與字段隱藏

Parent obj = new Child();
obj.field;  // 訪問 Parent.field,字段無多態,靜態綁定
obj.method(); // 調用 Child.method(),方法動態綁定

2. instanceof 操作符

obj instanceof Type // 判斷 obj 是否為 Type/子類/實現類實例

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

int a = 1;
Integer A = new Integer(a); // 或 Integer.valueOf(a)
a = A.intValue();           // 解箱
// Java 5+ 自動裝箱/拆箱

4. final 變量初始化規則

類型初始化位置
靜態 final聲明處 / 靜態初始化塊
實例 final聲明處 / 實例初始化塊 / 構造器

注意:final 變量必須顯式初始化,系統不會隱式初始化。

5. final 方法與類

  • final 方法不可重寫,private 方法隱含 final
  • final 類不可繼承
  • 子類出現同名 final 方法屬於新定義,非重寫

四、不可變類設計模式

1. 不可變類特徵

  • 類 final,所有字段 final + private
  • 無 setter,僅通過構造器初始化
  • 可變組件(如集合/日期)防御性拷貝

JDK 內置不可變類:8 個包裝類、String、BigInteger、BigDecimal 等。

2. 緩存實例的不可變類範例

public final class CacheImmutable {
    private static final int MAX_SIZE = 10;
    private static final CacheImmutable[] cache = new CacheImmutable[MAX_SIZE];
    private static int pos = 0;
    private final String name;

    private CacheImmutable(String name) { this.name = name; }

    public static CacheImmutable valueOf(String name) {
        // 查找緩存
        for (int i = 0; i < MAX_SIZE; i++) {
            if (cache[i] != null && cache[i].name.equals(name)) return cache[i];
        }
        // 創建新實例並入緩存(循環覆蓋)
        CacheImmutable instance = new CacheImmutable(name);
        if (pos == MAX_SIZE) { cache[0] = instance; pos = 1; }
        else { cache[pos++] = instance; }
        return instance;
    }
    // equals/hashCode 基於 name 實現
}

適用場景:高頻重複值(如枚舉替代品),低頻值反而增加 GC 壓力。

五、修飾符組合規則

  • static 與 abstract 不能同時修飾方法(無類實例方法)
  • 接口字段隱含 public static final,方法隱含 public abstract(Java 8+ 可有 default/static 方法)
  • 類可單繼承、多實現

六、內部類完整體系

1. 變量訪問查找順序

方法局部變量 → 外部類實例字段 → 內部類字段 → 編譯錯誤

class Outer {
    String prop = "外部類實例變量";
    class Inner {
        String prop = "內部類實例變量";
        void info() {
            String prop = "局部變量";
            System.out.println(Outer.this.prop); // 訪問外部類
            System.out.println(this.prop);       // 訪問內部類
            System.out.println(prop);            // 訪問局部變量
        }
    }
}

2. 非靜態內部類限制

  • 不能有 static 方法/字段/初始化塊(需依附外部實例)
  • 創建語法:Outer.Inner in = new Outer().new Inner();
  • 繼承非靜態內部類需顯式調用 outer.super()

3. 靜態內部類

  • 可有 static 成員,無外部實例依賴
  • 創建語法:Outer.StaticInner in = new Outer.StaticInner();
  • 繼承無需外部實例

七、包與編譯運行

  • 帶包編譯:javac -d . Hello.java(當前目錄生成包結構)
  • 運行:java 包名.類名
  • 無多維數組,int[][] 實為數組的數組

八、單例模式(經典懶漢式)

public class Singleton {
    private static Singleton instance;
    private Singleton() {}
    public static Singleton getInstance() {
        if (instance == null) instance = new Singleton(); // 非線程安全
        return instance;
    }
}

生產建議:使用枚舉單例、雙重檢查鎖、靜態內部類等線程安全寫法。

九、總結

這 22 個知識點構成了 Java 基礎的「知識骨架」。建議開發者:

  1. 逐項驗證理解,編寫微基準測試確認行為
  2. 關注 Java 8+ 新特性(Lambda、Stream、Optional、默認方法)對傳統模式的影響
  3. 結合 JVM 規範理解底層實現(如字符串常量池從永久代移至堆、類加載機制等)
  4. 實戰中優先使用標準庫與成熟框架,避免重複造輪子
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved