八大基本類型對應包裝類
| 基本類型 | 包裝類 | 備註 |
| byte | Byte | |
| short | Short | |
| int | Integer | 最常用 |
| long | Long | |
| float | Float | |
| double | Double | |
| char | Character | |
| boolean | Boolean | |
JDK 5+ 自動裝箱與拆箱
Integer i = 10; // 自動裝箱:Integer.valueOf(10)
int n = i; // 自動拆箱:i.intValue()
List list = new ArrayList<>();
list.add(100); // 裝箱
int x = list.get(0); // 拆箱
本質:編譯器語法糖,分別調用 valueOf() 與 xxxValue()。
基本類型 ⇄ 字串 轉換大全
基本類型 → 字串
// 方式 1:String.valueOf()(推薦,null 安全)
String s1 = String.valueOf(123);
String s2 = String.valueOf(true);
// 方式 2:包裝類 toString()
String s3 = Integer.toString(456);
// 方式 3:連接空字串(效能稍差)
String s4 = 789 + "";
字串 → 基本類型
// 包裝類 parseXxx(拋 NumberFormatException)
int a = Integer.parseInt("123");
double b = Double.parseDouble("3.14");
boolean c = Boolean.parseBoolean("true");
// 包裝類 valueOf → 拆箱
Integer obj = Integer.valueOf("456");
int d = obj; // 自動拆箱
進階:Integer 緩存機制
Integer a = 127, b = 127; // 緩存區 [-128, 127] 同一物件 → a == b 為 true
Integer c = 128, d = 128; // 新建物件 → c == d 為 false
// 比較值永遠用 equals()
常見陷阱與最佳實踐
- 拆箱空指針:
Integer obj = null; int n = obj; → NPE。使用前判空或用 Optional。
- 字串格式化:
String.format("%,d", 1000000) → "1,000,000"。
- 進制轉換:
Integer.toBinaryString(10) → "1010";Integer.parseInt("FF", 16) → 255。
- 大數值:超出
long 範圍改用 BigInteger/BigDecimal。
總結表
| 方向 | 核心 API | 注意點 |
| 基本 → 字串 | String.valueOf() | null 安全,效能佳 |
| 字串 → 基本 | Integer.parseInt() 等 | 異常處理,避免空指針 |
| 裝箱/拆箱 | 自動(JDK 5+) | 緩存範圍、NPE 風險 |