一、常量
分類
- 字面值常量:字符串(雙引號)、整數、小數、字符(單引號)、布爾(true/false)、空(null)
- 自定義常量:
final 修飾(面向對象部分講解)
二、進制轉換
常見進制表示
| 進制 | 組成 | 前綴 | 示例(十進制100) |
| 二進制 | 0,1 | 0b/0B | 0b1100100 |
| 八進制 | 0-7 | 0 | 0144 |
| 十進制 | 0-9 | 無 | 100 |
| 十六進制 | 0-9,a-f | 0x/0X | 0x64 |
轉換口訣
- 任意進制 → 十進制:系數 × 基數權 相加(權從右起 0 遞增)
- 十進制 → 任意進制:除基取余,逆序排列
- 二進制 ↔ 八進制:三位一組
- 二進制 ↔ 十六進制:四位一組
原碼、反碼、補碼(了解)
- 原碼:最高位符號位,其餘數值位
- 反碼:正數同原碼;負數數值位取反
- 補碼:正數同原碼;負數反碼末位+1(計算機實際存儲形式)
三、變量
定義格式
數據類型 變量名 = 變量值;
注意事項
- 同一作用域內變量名唯一
- 局部變量使用前必須顯式初始化
- 一條語句可定義多個:
int a, b, c;
四、基本數據類型(4類8種)
| 類別 | 類型 | 占用 | 範圍/說明 |
| 整數 | byte | 1字節 | -128 ~ 127 |
| short | 2字節 | -215 ~ 215-1 |
| int | 4字節 | -231 ~ 231-1(默認) |
| long | 8字節 | -263 ~ 263-1(賦值加L) |
| 浮點 | float | 4字節 | 單精度,賦值加F,約 ±3.4E38 |
| double | 8字節 | 雙精度,默認,約 ±1.7E308 |
| 字符 | char | 2字節 | 0 ~ 65535,Unicode編碼,可存中文 |
| 布爾 | boolean | 理論1位 | true/false,JVM未明確規定大小 |
類型轉換規則
- 隱式(自動):小範圍 → 大範圍(byte/short/char → int → long → float → double)
- 強制(造型):大範圍 → 小範圍,格式
(目標類型)值,可能損失精度/溢出
- byte/short/char 運算直接提升為 int
經典面試題:變量相加 vs 常量相加
byte b1 = 3, b2 = 4;
byte b3 = b1 + b2; // 編譯錯誤:b1,b2為變量,運行期才知值,自動提升為int
byte b4 = 3 + 4; // 編譯通過:常量優化,編譯期直接計算結果7賦值
long vs float 範圍對比
- long:8字節,最大 263-1 ≈ 9.2E18
- float:4字節(1符號+8指數+23尾數),最大 ≈ 3.4E38 遠大於 long
- 原因:浮點採用科學計數法(IEEE 754),指數位決定範圍
五、字符與字符串運算
'a' 輸出 97(ASCII 碼),記住 '0'=48, 'A'=65, 'a'=97
+ 遇字符串即為連接符,左到右 依次計算:
System.out.println("hello" + 'a' + 1); // helloa1
System.out.println('a' + 1 + "hello"); // 98hello
六、運算符詳解
算術運算符
+, -, *, /, %, ++, --
- 整數相除只得整數,需轉浮點類型得小數
% 規律:符號跟隨被模數(左邊);x%2 只能是 0/1,常用作開關
++/-- 運算符
- 單獨使用:前綴/後綴效果同
- 參與運算:前綴先增/減後取值,後綴先取值後增/減
int x = 4, y = (x++) + (++x) + (x*10); // 4 + 6 + 60 = 70
賦值運算符
+=, -=, *=, /=, %= 含隱式強轉:short s=1; s+=1; 正確(相當於 s=(short)(s+1))
關系/邏輯/位/三元運算符
- 關系:
==, !=, >, >=, <, <= 結果均為 boolean
- 邏輯:
&&, ||, !(短路);&, |, ^(非短路/位運算)
- 三元:
條件 ? 結果1 : 結果2