在 Java 程式設計中,變數是儲存資料的基本單位。當我們宣告變數時,記憶體管理系統會根據資料類型分配相應的儲存空間,且該空間專門用於儲存特定類型的資料。透過定義不同類型的變數,我們可以在記憶體中儲存整數、浮點數、字元或布林值等各類資料。
| 類型 | 位元數 | 範圍 | 預設值 | 適用場景 |
|---|---|---|---|---|
| byte | 8 位元 | -128 ~ 127 | 0 | 大型陣列節省空間,佔用 int 1/4 空間 |
| short | 16 位元 | -32,768 ~ 32,767 | 0 | 節省空間,佔用 int 1/2 空間 |
| int | 32 位元 | -2,147,483,648 ~ 2,147,483,647 | 0 | 一般整數運算的預設選擇 |
| long | 64 位元 | -2^63 ~ 2^63-1 | 0L | 需要大範圍整數時使用,常數需加 L 後綴 |
| 類型 | 位元數 | 標準 | 預設值 | 注意事項 |
|---|---|---|---|---|
| float | 32 位元 | IEEE 754 單精度 | 0.0f | 常數需加 f/F 後綴,不適合精確計算(如貨幣) |
| double | 64 位元 | IEEE 754 雙精度 | 0.0d | 浮點數預設類型,同樣不適合精確計算 |
無需死記硬背各類型範圍,Java 將這些值定義在對應的包裝類別常數中。以下範例示範如何程式化取得所有基本類型的位元數、最小值與最大值:
public class PrimitiveTypeDemo {
public static void main(String[] args) {
// byte 範例
System.out.println("基本類型:byte 位元數:" + Byte.SIZE);
System.out.println("包裝類別:java.lang.Byte");
System.out.println("最小值:Byte.MIN_VALUE=" + Byte.MIN_VALUE);
System.out.println("最大值:Byte.MAX_VALUE=" + Byte.MAX_VALUE);
System.out.println();
// 其他類型同理:Short, Integer, Long, Float, Double, Character
// Character 類型輸出時需轉為 int 顯示數值
System.out.println("最小值:Character.MIN_VALUE=" + (int) Character.MIN_VALUE);
System.out.println("最大值:Character.MAX_VALUE=" + (int) Character.MAX_VALUE);
}
}
輸出結果關鍵點:Float 和 Double 的極值會以科學記號顯示(如 3.4028235E38 表示 3.4028235 × 10^38)。另外,Java 還有 void 基本類型,對應 java.lang.Void 包裝類別,但無法直接操作。
nullSite site = new Site("Runoob");使用 final 關鍵字定義常量,慣例採大寫命名(如 final double PI = 3.1415927;)。
進制前綴:八進制以 0 開頭,十六進制以 0x 開頭。範例:int octal = 0144; int hex = 0x64;
字串與字元逸出序列:支援 \n 換行、\t 定位、\\ 反斜線、\" 雙引號、\uxxxx Unicode 字元等。
資料類型由低向高轉換:byte,short,char → int → long → float → double
條件:目標類型位元數大於來源類型。例如 char → int 自動提升,'a' 自動轉為 ASCII 碼 97。
語法:(目標類型)值。風險:可能導致資料溢位或精度遺失。
int i = 128; byte b = (byte)i; → 結果 -128(溢位)(int)23.7 = 23,(int)-45.89f = -45f/F 後綴掌握基本資料類型是 Java 程式設計的基石,下一節將深入探討變數類型與作用域的進階應用。