每個變量、表達式、參數、返回值都有編譯期確定的類型。基本類型非對象,存儲值本身而非引用,性能最高、內存最緊湊。
| 類型 | 關鍵字 | 位數 | 字節 | 取值範圍 | 默認值 | 字面量後綴 |
|---|---|---|---|---|---|---|
| 字節型 | byte | 8 | 1 | -128 ~ 127 | 0 | 無(需造型) |
| 短整型 | short | 16 | 2 | -32,768 ~ 32,767 | 0 | 無 |
| 整型 | int | 32 | 4 | -2,147,483,648 ~ 2,147,483,647 | 0 | 無(默認) |
| 長整型 | long | 64 | 8 | -9.22e18 ~ 9.22e18 | 0L | L 或 l |
| 單精度浮點 | float | 32 | 4 | ±3.4e38(6~7 位有效數字) | 0.0f | F 或 f |
| 雙精度浮點 | double | 64 | 8 | ±1.79e308(15 位有效數字) | 0.0d | D 或 d(默認) |
| 字符型 | char | 16 | 2 | 0 ~ 65,535 (Unicode BMP) | '\u0000' | 單引號 'a' |
| 布爾型 | boolean | ~1 (JVM 實現相關) | - | true / false | false | 無 |
1230173(前導 0)0x7B / 0X7B0b1111011 / 0B11110111_000_000、0xFF_EC_DE_5E 提高可讀性。1.23e4 (=12300)、1.23E-4 (=0.000123)。double,float 必須加 F/f:3.14F。Float.POSITIVE_INFINITY、NEGATIVE_INFINITY、NaN;Double 同理。char 存儲 UTF-16 碼元(0~FFFF),基本多語言平面(BMP)字符一個 char,補充字符(Emoji、生僻字)需兩個 char(代理對 surrogate pair)。\b \t \n \r \" \' \\、八進制 \123、Unicode \u0041。無大小規範,JVM 通常用 int (32位) 或 byte 表示。不可與整數互換(C 中 0/非 0 即 false/true),嚴格類型安全。
每種基本類型對應包裝類:Byte, Short, Integer, Long, Float, Double, Character, Boolean。
自動裝箱:基本 → 包裝(Integer i = 10; → Integer.valueOf(10))。
自動拆箱:包裝 → 基本(int n = i; → i.intValue())。
緩存範圍:Integer.valueOf() 緩存 -128~127,Integer a=100, b=100; a==b → true;Integer c=200, d=200; c==d → false(比較內容用 equals())。
BigInteger:任意精度整數,支持所有數學運算、位運算、質數測試。BigDecimal:任意精度十進制浮點,**金融計算必須**,避免二進制浮點誤差(0.1+0.2!=0.3)。new BigDecimal("0.1") 字符串構造器,**禁用 double 構造器**(會帶入二進制誤差)。int(性能最優、CPU 原生)。long。byte/short。double。BigDecimal。boolean。char(單字符)、String(序列)。