const、goto 是保留字,**不可使用**,編譯報錯。true, false, null)。UpperCamelCase (如 UserService)。lowerCamelCase (如 getUserName)。UPPER_SNAKE_CASE (如 MAX_COUNT)。com.company.project.module)。| 類型 | 關鍵字 | 位數 | 字節 | 默認值 | 取值範圍 |
|---|---|---|---|---|---|
| 字節型 | byte | 8 | 1 | 0 | -128 ~ 127 |
| 短整型 | short | 16 | 2 | 0 | -32,768 ~ 32,767 |
| 整型 | int | 32 | 4 | 0 | -2^31 ~ 2^31-1 |
| 長整型 | long | 64 | 8 | 0L | -2^63 ~ 2^63-1 |
| 單精度浮點 | float | 32 | 4 | 0.0f | ~±3.4E38 (7-8 位有效數字) |
| 雙精度浮點 | double | 64 | 8 | 0.0d | ~±1.7E308 (15-16 位有效數字) |
| 字符型 | char | 16 | 2 | '\u0000' | 0 ~ 65,535 (Unicode) |
| 布爾型 | boolean | 1 (JVM 實現相關) | — | false | true / false |
byte, short, char 參與運算**直接提升為 int**。double → 全提升為 double。double 有 float → 全提升為 float。float 有 long → 全提升為 long。int (含 byte/short/char 提升後)。int i = 128; byte b = (byte) i; // b = -128 (溢出)
double d = 3.14; float f = (float) d; // 精度降低
| 優先級 | 類別 | 運算符 | 結合性 |
|---|---|---|---|
| 1 | 後綴 | expr++, expr-- | 左→右 |
| 2 | 一元 | ++expr, --expr, +, -, ~, ! | 右→左 |
| 3 | 算術 | *, /, % | 左→右 |
| 4 | 算術 | +, - | 左→右 |
| 5 | 移位 | <<, >>, >>> | 左→右 |
| 6 | 關系 | <, <=, >, >=, instanceof | 左→右 |
| 7 | 相等 | ==, != | 左→右 |
| 8 | 按位與 | & | 左→右 |
| 9 | 按位異或 | ^ | 左→右 |
| 10 | 按位或 | | | 左→右 |
| 11 | 邏輯與 | && | 左→右 |
| 12 | 邏輯或 | || | 左→右 |
| 13 | 三元 | ? : | 右→左 |
| 14 | 賦值 | =, +=, -=, *=, /=, %=, &=, ^=, |=, <<=, >>=, >>>= | 右→左 |
int i = 3;
int a = i++; // a=3, i=4 (先用後增)
int b = ++i; // i=5, b=5 (先增後用)
// 經典面試題
int x = 3;
int y = x++ * ++x; // 步驟: x++ 用3 -> x=4; ++x 增至5 -> 用5; y=3*5=15; 最終 x=5
<< n:左移 n 位,低位補 0,**相當於 × 2^n**。>> n:右移 n 位,**符號位擴展** (正數補 0,負數補 1),**相當於 ÷ 2^n** (向零取整)。>>> n:無符號右移,高位**無條件補 0**,負數會變巨大正數。& (與):同 1 為 1,**清零/取模** (如 x & 1 判斷奇偶,x & (n-1) 取模 2^n)。| (或):有 1 為 1,**置位**。^ (異或):不同為 1,**翻轉/交換變量** (無需臨時變量)。~ (非):按位取反。
int max = (a > b) ? a : b; // 等價於 if-else
// 嵌套慎用,可讀性差
float f = 3.14; **報錯**!浮點數字面值默認 double,需 3.14f 或強轉。long l = 2147483648; **報錯**!整數字面值默認 int,超範圍需 2147483648L。byte b = 10; b = b + 1; **報錯**!b+1 提升為 int,賦值回 byte 需強轉。正確:b++ 或 b += 1 (隱含強轉)。5 / 2 = 2,需 5 / 2.0 得 2.5。== 比較引用類型地址,內容比較用 equals()。