首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> SQL Server 資料庫 >> SQL Server 2008

Java 基本型別與包裝類別完整解析:八大基本型別、包裝類、自動裝箱拆箱

     編輯:SQL Server 2008

八大基本型別總覽

分類型別位元數預設值範圍 / 說明
整數byte80-128 ~ +127
short160-2¹⁵ ~ +2¹⁵-1
int320-2³¹ ~ +2³¹-1
long640L-2⁶³ ~ +2⁶³-1
浮點數float320.0fIEEE 754 單精度
double640.0IEEE 754 雙精度(預設)
字元char16'\u0000'Unicode 字元,0 ~ 65535
布林boolean1 (JVM 實作相關)falsetrue / false

關鍵補充說明

  • ^ 符號:表格中 ^ 代表次方(如 2^31 = 2 的 31 次方)
  • char 佔 2 位元組:Java 採用 UTF-16,一個 char 代表一個 Unicode 代碼單元
  • boolean 無具體大小:JVM 實作時通常佔 1 位元組或 4 位元組
  • void:非資料型別,僅用於方法回傳值宣告

對應包裝類別

基本型別包裝類別建構子(已棄用)靜態工廠方法(建議)
byteBytenew Byte((byte)0)Byte.valueOf((byte)0)
shortShortnew Short((short)0)Short.valueOf((short)0)
intIntegernew Integer(0)Integer.valueOf(0)
longLongnew Long(0L)Long.valueOf(0L)
floatFloatnew Float(0.0f)Float.valueOf(0.0f)
doubleDoublenew Double(0.0)Double.valueOf(0.0)
charCharacternew Character('a')Character.valueOf('a')
booleanBooleannew Boolean(false)Boolean.valueOf(false)

特殊高精度類別(無對應基本型別)

  • BigInteger:任意精度整數運算
  • BigDecimal:任意精度浮點數運算(金融計算必備)

基本型別 vs 包裝類別 差異比較

維度基本型別包裝類別
物件本質非物件物件(繼承 Object)
宣告方式無需 new需 new 或 valueOf()
儲存位置堆疊(區域變數)堆積(物件實例),變數存參考
預設值型別相關(0, false 等)null
集合框架不可直接使用可存入 List/Map/Set
Null 語意無法表達「無值」可表達 null
效能高(直接存取)較低(物件建立、GC、間接存取)

自動裝箱與拆箱

// 裝箱:基本型別 → 包裝類別
Integer i = 100;          // 編譯器轉為 Integer.valueOf(100)
List list = new ArrayList<>();
list.add(100);            // 自動裝箱

// 拆箱:包裝類別 → 基本型別
int j = i;                // 編譯器轉為 i.intValue()
int sum = list.get(0) + 200; // 自動拆箱運算

// 注意:null 拆箱會拋出 NullPointerException
Integer k = null;
int m = k; // NPE at runtime

Integer 快取機制

Integer a = 100;
Integer b = 100;
System.out.println(a == b); // true (-128 ~ 127 範圍內快取)

Integer c = 200;
Integer d = 200;
System.out.println(c == d); // false (超出快取範圍,新建物件)

// 建議:比較包裝類別數值一律使用 .equals()
System.out.println(c.equals(d)); // true

最佳實務建議

  1. 優先使用基本型別:區域變數、效能敏感運算、大量資料處理
  2. 集合、泛型、需表達 null 時用包裝類別
  3. 避免在迴圈中頻繁裝箱/拆箱:造成大量臨時物件、GC 壓力
  4. 比較包裝類別用 .equals(),不要用 ==
  5. 金融/精度計算務必用 BigDecimal,嚴禁 float/double
  6. 方法參數/回傳值:考慮 null 語意選擇基本型別或包裝類別

總結

理解基本型別與包裝類別的差異、記憶體模型、自動裝箱拆箱機制,是寫出高效能、無 Bug Java 代碼的基礎。合理選擇型別,平衡效能與表達力。

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