Java 中基本類型轉換遵循「容量從小到大」自動提升(隱式轉換),反之需強制轉換(強制類型轉換)。記住轉換鏈:
byte, short, char → int → long → float → double
特殊注意: long (8字節) 雖大於 float (4字節),但 float 表示範圍更大,故 long → float 屬於隱式轉換。
byte a = 10; int b = a; (byte → int)byte/short/char 參與運算先提升為 int。(目標類型) 變量或值
int a = 10; byte b = (byte)a; // 安全
byte b = (byte)130; // 溢位!輸出 -126
溢位原理深度剖析(以 130 為例):
int,二進制:00000000 00000000 00000000 10000010byte 截取低 8 位:1000001010000010 → 反碼 10000001 → 原碼 11111110-126s = s + 1 vs s += 1short s = 1;
s = s + 1; // 編譯錯誤:s+1 提升為 int,無法賦值給 short
s += 1; // 編譯通過:隱含強轉,等價於 s = (short)(s + 1)
複合賦值運算符(+=, -=, *=, /=`)內建強制轉換,是 Java 設計的「語法糖」。
Math.toIntExact() 等安全工具。