變數是程式儲存資料的基本單位。理解型別分類、宣告語法、作用域規則與型別轉換機制,是撰寫正確程式的基礎。
| 類別 | 型別 | 大小 | 預設值 | 範圍/說明 |
|---|---|---|---|---|
| 整數 | byte | 8 位元 | 0 | -128 ~ 127 |
short | 16 位元 | 0 | -32,768 ~ 32,767 | |
int | 32 位元 | 0 | -2^31 ~ 2^31-1 | |
long | 64 位元 | 0L | -2^63 ~ 2^63-1 | |
| 浮點 | float | 32 位元 | 0.0f | 單精度,約 7 位有效數字 |
double | 64 位元 | 0.0 | 雙精度,約 15 位有效數字 | |
| 字元 | char | 16 位元 | '\u0000' | Unicode 字元,無號整數 0~65535 |
| 布林 | boolean | ~1 位元 | false | true/false,非 0/1 |
注意:String 是類別(參考型別),非基本型別。
// 語法:型別 變數名 [= 初始值];
int count = 0;
double price = 19.99;
char grade = 'A';
boolean isValid = true;
// 同型別多變數宣告(逗號分隔)
int x = 10, y = 20, z = 30;
// 區域變數必須初始化後才能使用
// int a; System.out.println(a); // 編譯錯誤
_、$(不建議用 $)。_、$。class、int、for 等)。camelCase,有意義名稱(userCount 而非 uc)。| 變數類型 | 宣告位置 | 作用域範圍 | 生命週期 |
|---|---|---|---|
| 區域變數 | 方法/建構子/區塊內 | 從宣告處到所在大括號結束 | 方法執行期間 |
| 參數 | 方法簽名 | 整個方法體 | 方法呼叫期間 |
| 例項欄位 | 類別內、方法外 | 整個類別(視存取修飾詞) | 物件存在期間 |
| 靜態欄位 | static 修飾 | 整個類別/應用程式 | 類別載入到卸載 |
public void demo() {
int x = 1; // 方法作用域
if (true) {
int y = 2; // if 區塊作用域
// x 可見,y 可見
}
// y 不可見(編譯錯誤)
// int y = 3; // 合法:不同區塊可重用名稱
}
內層區塊宣告同名變數會遮蔽外層變數。不建議,易造成混淆。
byte → short → char → int → long → float → double
short → int → long → float → double
char → int → long → float → double
int → long → float → double
long → float → double
float → double
編譯器自動處理,無資料遺失。
double d = 3.14;
int i = (int) d; // 3,截斷小數
long l = 10000000000L;
int j = (int) l; // 可能溢位,結果不可預期
風險:精度遺失、溢位、符號改變。
// 裝箱
Integer obj = 100; // 自動
// 拆箱
int val = obj; // 自動,obj 為 null 拋 NPE
final 修飾。BigDecimal,勿用 float/double。is/has/can 前綴(isActive)。