Java 基礎語法精華總結:從資料型別到控制流程
本文提煉自《Java 核心技術 卷 I》第 3 章,聚焦 Java 基本程式設計結構的核心知識點,包含資料型別、變數、運算子、字串處理、輸入輸出等實戰必備內容。
一、基本語法規範
- 大小寫敏感:
main ≠ Main
- 命名慣例:駝峰式(
lowerCamelCase),類名 UpperCamelCase,常量 UPPER_SNAKE_CASE
- main 方法簽名:
public static void main(String[] args),正常退出代碼 0,異常調用 System.exit(n)
- 註釋三種:
// 單行、/* */ 多行(不可嵌套)、/** */ 文檔註釋(可生成 Javadoc)
二、八大基本資料型別
| 分類 | 型別 | 位元數 | 範圍/精度 | 預設值 |
| 整數 | byte | 8 | -128 ~ 127 | 0 |
| short | 16 | -32,768 ~ 32,767 | 0 |
| int | 32 | -2^31 ~ 2^31-1 | 0 |
| long | 64 | -2^63 ~ 2^63-1 | 0L |
| 浮點 | float | 32 | ~6-7 位有效數字 | 0.0f |
| double | 64 | ~15 位有效數字 | 0.0 |
| 字符 | char | 16 | Unicode 字符 (UTF-16) | '\u0000' |
| 布林 | boolean | 1 (JVM 實現相關) | true/false | false |
關鍵特性
- 無無符號型別:所有數值型別均為有號,跨平台一致性由 JVM 保證。
- 數值字面量底線:Java 7+ 支援
1_000_000、0b1010_1100 提升可讀性。
- 浮點數陷阱:
2.0 - 1.1 = 0.8999999999999999,金融計算**嚴禁**用 float/double,必須用 BigDecimal。
- 特殊浮點值:
Double.POSITIVE_INFINITY、NEGATIVE_INFINITY、NaN;判斷 NaN 唯有 Double.isNaN(x)。
- char 陷阱:char 為 UTF-16 代碼單元,補充字符(Emoji、生僻字)佔 2 個 char,操作字串請用
String 或 codePoint API。
三、變數與常量
- 聲明即定義:Java 不區分聲明/定義,
int x = 10; 完成兩者。
- 區域變數無預設值:使用前**必須**顯式初始化,否則編譯錯誤。
- 常量定義:
static final double PI = 3.14159;,編譯期常量會內聯優化。
const 為保留關鍵字,不可使用。
四、運算子與表達式
1. 算術運算子
- 整數除零拋
ArithmeticException;浮點數除零得 Infinity/NaN。
++/-- 前綴/後綴區別:int a=1; b=++a → a=2,b=2;c=a++ → a=2,c=1。
- 建議:避免在複雜表達式中使用
++/--,降低可讀性。
2. 邏輯與位運算
- 短路邏輯:
&&、||,右運算元可能不執行(if (x!=0 && 10/x > 2) 安全)。
- 位運算:
& | ^ ~ << >> >>>(無符號右移補 0)。
- 位掩碼技巧:
(n & (1<<3)) >> 3 取第 4 位。
3. 三元運算子
int min = (x < y) ? x : y;
五、數學工具類
Math.sqrt(), Math.PI, Math.E
import static java.lang.Math.*; 可直接用 sqrt()。
StrictMath:嚴格遵循 IEEE 754,跨平台結果完全一致,效能稍低。
六、型別轉換
| 類型 | 範例 | 說明 |
| 隱式擴寬 | int → long → float → double | 無精度損失(long→float 可能損精度) |
| 顯式窄化 | (byte) 300 → 44 | 截斷高位,可能數值劇變 |
| 浮點轉整 | Math.round(3.6) → 4 (long) | 四捨五入,非截斷 |
七、字串核心機制
- 不可變性:
String 所有方法均返回新物件,原物件不變。
- 常量池:字面量
"abc" 共享;new String("abc") 強制建立新物件。
- 比較:
== 比引用,equals() 比內容。
- 拼接:
+ 編譯器優化為 StringBuilder;循環中請手動用 StringBuilder。
- 常用 API:
substring, split, replace, trim, format, join, lines() (Java 11+)。
八、輸入輸出基礎
Scanner 讀取標準輸入
Scanner in = new Scanner(System.in);
String name = in.nextLine(); // 整行
int age = in.nextInt(); // 整數
double score = in.nextDouble(); // 浮點
in.close();
格式化輸出
System.out.printf("姓名: %s, 年齡: %d, 分數: %.2f%n", name, age, score);
System.out.format("同上%n");
九、控制流程
if/else、switch (Java 12+ 支援表達式、模式匹配)、for/while/do-while
- 增強 for:
for (int x : arr) 僅讀遍歷,不可修改陣列元素。
break/continue 可帶標籤跳出多層循環。
十、大數值處理
BigInteger:任意精度整數,支援加減乘除、模運算、質數測試。
BigDecimal:任意精度十進制浮點,**金融/貨幣計算唯一選擇**,需指定 RoundingMode。
總結
第 3 章奠定了 Java 程式設計的語法基石。掌握基本型別特性、字串不可變機制、浮點數陷阱、BigDecimal 金融應用、Scanner/printf 輸入輸出,是寫出正確、高效 Java 代碼的前提。下一章將進入面向對象程式設計核心——類與物件。
- 上一篇文章: Log4j2 完整配置指南:從 Maven 依賴到多環境日誌實戰
- 下一篇文章: Java 集合框架核心實現對比:ArrayList vs LinkedList vs Vector 全方位解析
Copyright ©
程式碼之家 All Rights Reserved