ToolAct工具行動

Java 格式化工具

輸入 Java
輸出結果
行數: 1字元數: 0字節數: 0
行數: 1字元數: 0

什麼是 Java 格式化?

Java 格式化工具會用一致的縮排、換行和結構整理 Java 程式碼,讓類別、方法、區塊、泛型、註解和控制流程更容易閱讀。它適合處理複製來的片段、產生程式碼、程式碼審查準備、教學範例,以及因編輯器設定不同而風格混亂的檔案。格式化能提升可讀性和團隊協作,但不會自動修復業務邏輯、編譯錯誤、缺少 import、API 誤用或專案特定風格規則。在正式存放庫中使用前,應與團隊 formatter、建置工具或 CI 規範對齊,避免一次格式化製造大量無意義 diff。

使用方式

使用方式

  1. 將 Java 程式碼貼入或輸入左側輸入框
  2. 選擇縮排大小(2 空格、4 空格或 Tab 鍵)
  3. 點選「格式化」美化程式碼,或「壓縮」進行縮減
  4. 在右側查看結果(帶有語法高亮)
  5. 點選「複製」複製到剪貼簿

選項說明

縮排大小選擇 2 空格、4 空格或 Tab 鍵縮排
格式化使用正確的縮排和換行美化程式碼
壓縮移除空白字元和註解以減少檔案大小

程式碼提示

  • 格式化可提高可讀性,但不會編譯或檢查 Java 程式碼類型,因此編輯後請執行正常的構建或 IDE 檢查。
  • 壓縮 Java 原始碼對生產構建用處不大;為便於審查、堆疊追蹤和未來維護,請保留易讀的格式。

使用場景

程式碼審查前清理貼上的 Java 程式碼當方法主體從聊天室、文件或工單評論中複製過來時,間距往往不一致,此格式化器能快速恢復大括號和陳述式周圍可讀的縮排和換行。對於希望獲得可審查格式而無需開啟完整 IDE 專案的小型片段特別有用。
為文件或錯誤報告準備精簡範例壓縮模式會移除註解和多餘空白,使 Java 範例能放入議題欄位、日誌註解或重現說明中而無需捲動。由於解析和壓縮完全在瀏覽器中進行,內部套件名稱、半成品 DTO 或來自私有分支的專有程式碼可以在不離開頁面的情況下重新排版,這在分享仍包含客戶識別碼的重現步驟時很重要。
快速發現短片段中的明顯結構錯誤內建驗證在檢查括號平衡的同時會尊重字串、字元字面量和註解,因此能在你將片段貼到其他地方之前抓出缺少的大括號或小括號。它不是編譯器,但對於面試練習、檔案範例和獨立的工具方法來說是快速的合理性檢查。
將產生的程式碼對齊專案縮排風格在 2 空格、4 空格和 Tab 縮排之間切換,使產生的 getter、Lombok 輸出或 IDE 匯出與周圍檔案一致。在對整個模組執行之前,先檢查團隊的 Google Java Style、Checkstyle 或 Spotless 設定,否則格式化通過會產生嘈雜的 diff。
安全格式化列舉和註解密集的片段帶有常數、方法和註解陣列的列舉在聊天室中經常坍縮成難以閱讀的文字牆。重新格式化使每個常數及其參數各佔一行,然後驗證 import 和 public 修飾符在重寫後是否仍然存在。Google Java Style 規定 4 空格縮排和 100 列行寬,而 Eclipse 預設配置檔使用 2 空格 Tab,IntelliJ 內建風格通常延伸到 120 列;未先檢查團隊配置檔就執行此格式化器會在程式碼本身有效的情況下仍產生 diff。Import 順序規則(static import 在前,然後 java.*、javax.*、外部、本地)也是風格相關的,Map<String, List<Integer>> 中泛型尖括號的空格在較舊的 Map <String, List<Integer>> 形式下會被 Google Style 正規化為無空格。

技術原理

Java 格式化建立在詞法分析與 AST 建構之上。詞法掃描器逐字元讀取原始碼,產生詞法單元(token):關鍵字(class、public、static 及其他保留字)、識別字(變數和類別名稱)、字面值(數字、字串、字元)、運算子(+、-、==、&& 等)、分隔符({ } ( ) ; ,)以及註解(//、/* */)。 解析器依照 Java 語言規範(JLS)將詞法單元流轉換為抽象語法樹(AST),識別類別定義、方法主體、陳述式區塊、控制流程結構、註解及其他語法單元。格式化器遍歷 AST,按照風格指南(如 Google Java Style)重新產生程式碼:縮排隨區塊深度遞增,行寬上限為 100 列,運算子兩側加空格,逗號後加空格,左大括號保持在同一行(K&R 風格)。 註解處理是 Java 格式化中的特殊情況:單個註解與方法同行顯示;較長的註解清單則跨行排列,按參數對齊,每個註解各佔一行。

  • 詞法分析:識別 Java 的 50 個關鍵字、識別字、字面值、運算子和註解,輸出詞法單元流。
  • AST 建構:依照 JLS 規則建立 AST,正確處理類別、方法、控制流程、lambda 和 try-with-resources。
  • 縮排規則:Google 風格預設每層 4 個空格,行寬 100 列;超過限制的行會自動換行。
  • 換行策略:長方法鏈、參數清單和註解在逗號或點號處換行,續行與前一行首字元對齊。
  • 註解處理:單個註解保持同行;多個註解可排在同一行或各佔一行,由長度和參數對齊規則決定。
  • 註解保留:保持 // 和 /* */ 註解在原始位置;壓縮時可選擇移除。

範例

格式化類別定義

輸入:  public class User{private Long id;private String name;public User(Long id,String name){this.id=id;this.name=name;}}
輸出:
public class User {
  private Long id;
  private String name;

  public User(Long id, String name) {
    this.id = id;
    this.name = name;
  }
}

格式化方法鏈

輸入:  List<String> result=list.stream().filter(s->s.startsWith("a")).map(String::toUpperCase).sorted().collect(Collectors.toList());
輸出:
List<String> result = list.stream()
    .filter(s -> s.startsWith("a"))
    .map(String::toUpperCase)
    .sorted()
    .collect(Collectors.toList());

註解換行

輸入:  @Override public ResponseEntity<User> getUser(@PathVariable Long id,@RequestParam(defaultValue="10") int size){...}
輸出:
@Override
public ResponseEntity<User> getUser(
    @PathVariable Long id,
    @RequestParam(defaultValue = "10") int size) {
  ...
}

常見問題

採用哪一種 Java 風格?

常見預設是 Google Java Style 或 Sun/Oracle 規範:4 個空白縮排、K&R 大括號風格、行寬 100 欄。部分版本會提供切換風格的選項。任一風格指南的細節都很微妙——先跑一次格式化、檢視結果,再把設定固定下來。

格式化器看得懂新版 Java 嗎?

看解析器的版本而定。Records、sealed class、switch 表達式、文字區塊(text block)以及模式比對都是較新的功能;舊版解析器可能無法處理。先試一段程式碼——能順利格式化就沒問題;如果報錯,請檢查解析器版本。

會修正 import 或未使用的變數嗎?

不會。格式化只會調整空白與大括號位置。整理 import、移除未使用變數等靜態分析需要真正的 IDE,或像 google-java-format 開啟 --skip-removing-unused-imports off 等工具。

原始碼會被上傳嗎?

不會。格式化是透過 JS 版本的 Java 解析器在瀏覽器內完成,程式碼不會傳出去。如果你的安全政策禁止任何網路工具接觸專屬程式碼,請避免貼上。

結果會跟 IntelliJ 或 Eclipse 一樣嗎?

不太可能完全一致。每個 IDE 都有自己的格式化器,選項多達上千個。本工具適合臨時格式化;想維持團隊一致,請改用可在 CI 強制執行的工具,例如把 google-java-format 或 Spotless 整合到建置流程中。

可以壓縮(minify)Java 嗎?

Java 是編譯型語言——並不像 JS 那樣有「壓縮」的概念。class 檔案最佳化是編譯器與 ProGuard 在建置時做的事。本頁面只負責原始碼層級的格式化。

為什麼我的程式碼多了空行?

許多風格指南要求類別成員或方法之間留一行空白。格式化器會依規範補上空行。如果你偏好較緊湊的版面,請覆寫對應的風格選項。