核心結論:8 基本類型 + 8 包裝類
| 分類 | 基本類型 | 包裝類 | 字節數 | 位數 | 取值範圍 | 默認值 |
| 整數 | byte | Byte | 1 | 8 | -128 ~ 127 (-27 ~ 27-1) | 0 |
| short | Short | 2 | 16 | -32,768 ~ 32,767 (-215 ~ 215-1) | 0 |
| int | Integer | 4 | 32 | -2,147,483,648 ~ 2,147,483,647 (-231 ~ 231-1) | 0 |
| long | Long | 8 | 64 | -9.22×1018 ~ 9.22×1018 (-263 ~ 263-1) | 0L |
| 浮點 | float | Float | 4 | 32 | ±3.4×1038 (約 6-7 位有效數字) | 0.0f |
| double | Double | 8 | 64 | ±1.7×10308 (約 15 位有效數字) | 0.0d |
| 字符 | char | Character | 2 | 16 | \\u0000 ~ \\uFFFF (0 ~ 65,535) | \\u0000 |
| 布爾 | boolean | Boolean | 1~4* | - | true / false | false |
* boolean 在 JVM 規範中未定義具體大小,通常 1 字節(數組)或 4 字節(局部變量槽)。
關鍵區別與使用建議
1. 整數首選 int
- CPU 32 位/64 位寄存器天然適配 int,運算最快
- byte/short 參與運算會自動提升為 int,反而需額外轉換指令
- long 僅在數值超出 int 範圍時使用(如時間戳、ID 生成)
2. 浮點首選 double
- Java 默認浮點字面量是 double(如
3.14)
- float 需後綴
F(3.14F),精度不足導致科學計算誤差
- 金融計算 嚴禁 用 float/double,必須用
BigDecimal
3. 字面量後綴規範
int a = 100; // 無後綴默認 int
long b = 100L; // 必須大寫 L(小寫 l 極易混淆 1)
float c = 3.14F; // 必須 F/f
double d = 3.14; // 無後綴或 D/d
byte e = (byte)10; // 強制轉型
char f = '中'; // 單引號,支持 Unicode \u4e2d
4. 基本類型 vs 包裝類
| 特性 | 基本類型 | 包裝類 |
| 內存 | 棧上直接存值 | 堆上存對象引用 |
| 默認值 | 有確定默認值 | null |
| 方法調用 | 不可調用方法 | 可調用 toString/equals/hashCode 等 |
| 泛型支持 | 不支持 | 支持(List<Integer>) |
| 性能 | 極高 | 有裝箱/拆箱開銷 |
自動裝箱/拆箱陷阱
Integer a = 100; // 裝箱:Integer.valueOf(100)
Integer b = 100;
System.out.println(a == b); // true(-128~127 緩存池)
Integer c = 200;
Integer d = 200;
System.out.println(c == d); // false(超出緩存範圍,新建對象)
// 正確比較
System.out.println(c.equals(d)); // true
緩存範圍:Byte/Short/Integer/Long 均為 -128~127,Character 0~127。Boolean 直接返回 TRUE/FALSE 常量。
浮點精度失真演示
System.out.println(0.1 + 0.2); // 0.30000000000000004
System.out.println(1.0 - 0.8); // 0.19999999999999998
// 正確做法
BigDecimal bd = BigDecimal.valueOf(0.1).add(BigDecimal.valueOf(0.2));
System.out.println(bd); // 0.3
總結
掌握 8 大基本類型的 範圍、字節、默認值、包裝類對應 是 Java 基石。實戰原則:整數用 int、浮點用 double、金融用 BigDecimal、集合用包裝類、高性能熱點路徑用基本類型。避免裝箱拆箱在循環中產生,善用緩存池特性優化內存。
- 上一篇文章: Java 圖片裁剪與縮略圖生成完整實戰:ImageIO 核心 API 深度應用
- 下一篇文章: Java HttpClient 實現表單提交與多文件上傳完整封裝
Copyright ©
程式碼之家 All Rights Reserved