Java 定義八種基本資料類型,分為四類:整數(4 種)、浮點數(2 種)、字元(1 種)、布林(1 種)。它們非物件,直接儲存在棧記憶體,效能最高。
| 類型關鍵字 | 中文名稱 | 位元數 | 位元組數 | 取值範圍 | 預設值 | 包裝類別 |
|---|---|---|---|---|---|---|
byte |
位元組 | 8 | 1 | -128 ~ 127 | 0 | Byte |
short |
短整數 | 16 | 2 | -32,768 ~ 32,767 | 0 | Short |
int |
整數 | 32 | 4 | -2,147,483,648 ~ 2,147,483,647 | 0 | Integer |
long |
長整數 | 64 | 8 | -9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807 | 0L | Long |
float |
單精度浮點數 | 32 | 4 | ±3.40282347×1038 (約 6-7 位有效數字) | 0.0f | Float |
double |
雙精度浮點數 | 64 | 8 | ±1.7976931348623157×10308 (約 15-16 位有效數字) | 0.0d | Double |
char |
字元 | 16 | 2 | \\u0000 ~ \\uFFFF (0 ~ 65,535) | \\u0000 | Character |
boolean |
布林 | 1 (JVM 實作通常用 1 位元組) | 1 (實作相關) | true / false | false | Boolean |
int a = 100; // 正常
long b = 100; // 隱式轉型
long c = 3000000000; // 編譯錯誤!超出 int 範圍
long d = 3000000000L; // 需加 L 後綴
float f = 3.14; // 編譯錯誤
float f = 3.14f; // 需加 f/F 後綴
double d = 3.14; // 正常
double d = 3.14d; // 可選 d/D 後綴
char c1 = 'A'; // 字元字面值
char c2 = 65; // 數值賦值
char c3 = '\u0041'; // Unicode 轉義
char c4 = '\n'; // 轉義字元
// 可參與算術運算
char c5 = 'A' + 1; // 'B' (66)
JVM 規範未定義 boolean 確切大小,通常:
Integer、Short、Byte、Character、Boolean 在特定範圍有緩存int,大數值用 longdouble,記憶體敏感用 floatBigDecimalint 或 long 配合位元運算int[]) 而非集合