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

Java 易混淆概念辨析:final/finally/finalize、內部類、集合、斷言、GC

     編輯:Java 程式設計入門

1. final / finally / finalize 三兄弟

關鍵字角色核心規則
final修飾符類不可繼承、方法不可覆寫、變數不可變更(編譯期常量或執行期唯一賦值)
finally異常處理區塊try-catch 後必執行,用於資源釋放,即使有 return 也會執行
finalize()Object 方法GC 回收前由 JVM 呼叫,用於釋放非記憶體資源(檔案控制代、Socket),不可依賴時機

2. 匿名內部類繼承/實作規則

  • 可繼承一個類 或 實作一個介面,不可同時做兩者。
  • 本質:隱式定義一個繼承指定類/實作指定介面的子類別,並立即建立實例。

3. Static Nested Class vs Inner Class

特性Static Nested ClassInner Class (非靜態)
外部類實例不需要需要
訪問外部實例成員不可直接訪問可直接訪問
本質頂層類別的靜態成員隱含持有外部實例引用

4. & vs &&

  • &:位運算邏輯與(雙邊必評估)
  • &&:短路邏輯與(左側 false 則右側不評估)

5. HashMap vs Hashtable

特性HashMapHashtable
同步非同步(高效能)同步(較慢)
Null 鍵/值允許一個 null key、多個 null value完全禁止
繼承Map 介面Dictionary 抽象類(舊API)

6. Collection vs Collections

  • Collection:頂層集合介面(List、Set、Queue 父介面)
  • Collections:工具類,提供排序、搜尋、同步包裝等靜態方法

7. assert 斷言使用指南

  • 語法:assert expr1 : expr2;(expr1 為 boolean,expr2 為錯誤訊息物件)
  • 適用:私有方法前置條件檢查、程式碼不可達路徑驗證、後置條件測試
  • 禁用:公共方法參數檢查(必須永遠生效)、改變程式狀態的運算
  • 啟用:編譯 -source 1.4,執行 -ea / -da 控制

8. GC 基礎認知

  • GC = Garbage Collector,自動記憶體管理,開發者無需手動 free
  • 請求 GC:System.gc() 或 Runtime.getRuntime().gc()(僅建議,非強制)
  • 現代 JVM 採用分代收集、並行/並發/低延遲多種演算法(G1、ZGC、Shenandoah)

9. String s = new String("xyz") 建立幾個物件?

兩個:字串常量池中 "xyz"(若不存在則建立),堆積區 new String(...) 建立的新物件。面試經典題,考察常量池與堆區區別。

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