S SmartDocs

编程语言

Python、C、C++、Java、JavaScript、TypeScript、Go、R 与 Haskell 教程,从入门语法到高级技巧。

Java 更新于 2026-08-14

多執行緒基礎

現代 CPU 早已是多核心的天下,一支只會用單一執行緒的程式,等於買了八線道高速 公路卻只開一條車道。多執行緒讓程式能同時處理多件事:一邊下載檔案、一邊更新 進度條,或讓伺服器同時服務上千個使用者。但並行也是 Java 中最容易出錯、最難 除錯的領域——本章與下一章將帶你把這塊硬骨頭啃下來。

阅读文章 →
Java 更新于 2026-08-15

並行程式設計進階

上一章我們用 new Thread() 手動建立執行緒。這在教學上很直觀,但在正式 系統中幾乎是禁忌。本章介紹 java.util.concurrent(簡稱 JUC)套件——由 並行大師 Doug Lea 設計的一整套高階工具,讓我們站在巨人的肩膀上寫並行程式。

阅读文章 →
Java 更新于 2026-08-14

反射與標註

到目前為止,我們寫的程式都在「編譯期」就決定了要用哪個類別、呼叫哪個方法。 反射(reflection)打破了這個限制:它讓程式在執行期才動態地檢視與操作 類別、方法與欄位。這聽起來很抽象,但你天天在用的框架幾乎都靠它運作——Spring 的依賴注入、Jackson 的 JSON 序列化、JUnit 的測試探索,底層都是反射。

阅读文章 →
Java 更新于 2026-08-15

JVM 深入剖析

前五章我們專注在「怎麼寫 Java」,本章要往下鑽一層,看看「Java 程式如何被執行」。 理解 JVM 不是為了炫技,而是實務所需:當線上服務發生記憶體溢位、GC 停頓過長、 或詭異的 ClassNotFoundException 時,唯有懂 JVM 才能快速定位問題。

阅读文章 →
Java 更新于 2026-08-15

網路程式設計與 JDBC

現代軟體幾乎沒有孤島:前端要打 API、後端要連資料庫、服務之間要互相呼叫。本章 聚焦兩個最基礎也最關鍵的能力——網路通訊與資料庫存取。這兩者 都建立在前幾章的基礎上:伺服器要用第 4 章的執行緒池服務多個連線,非同步 HTTP 呼叫要用 CompletableFuture,連線池的概念也與執行緒池一脈相承。

阅读文章 →
Java 更新于 2026-08-14

設計模式與現代 Java

歡迎來到進階篇的最後一章,也是全系列的終點。設計模式是前輩們把「反覆出現的 設計問題」歸納出的通用解法,是工程師之間的共通詞彙。但學設計模式有個常見誤區: 把模式當成必須硬套的教條。本章希望傳達的是——模式是詞彙,不是規則; 理解每個模式「解決什麼問題」,遠比背下它的類別圖重要。

阅读文章 →
Java 更新于 2026-08-14

認識 Java 與建置開發環境

歡迎踏上 Java 的學習之旅!學程式和學一門外語很像:一開始要先認識這門語言的 背景與「發音規則」,接著開口說出第一句話。本章就是這趟旅程的起點——我們會先 認識 Java 是什麼、為什麼全世界有數百萬名工程師靠它吃飯,然後把開發環境架設 起來,最後親手寫出第一個能執行的程式。

阅读文章 →
Java 更新于 2026-08-14

變數與資料型別

上一章我們讓程式成功「說話」了,但那個程式只會印出寫死的文字。真正的程式 必須能記住東西——玩家的血量、購物車的金額、使用者輸入的名字。這些被記住的 資料就存放在「變數」(variable)裡。本章先學會建立與命名變數,接著認識 Java 為不同種類的資料準備的八種基本型別,最後讓程式第一次「聽」懂你從 鍵盤輸入的內容。

阅读文章 →
Java 更新于 2026-08-14

運算子與運算式

上一章我們學會把資料放進變數,但只會「存放」的程式什麼也做不了——資料 必須被計算、比較、組合,才會產生價值。讓資料動起來的工具就是「運算子」 (operator),而運算子把變數與字面值組合起來的式子稱為「運算式」 (expression),每個運算式最終都會算出一個值。

阅读文章 →
Java 更新于 2026-08-14

流程控制

到目前為止,我們寫的程式都是「一本道」:從 main 的第一行走到最後一行, 每次執行的路線一模一樣。真實世界的程式顯然不是這樣——密碼對了才能登入、 餘額不足要擋下提款、名單有幾個人就寄幾封信。讓程式「看狀況做事」與 「重複做事」的語法,統稱流程控制(control flow),它是程式從「計算機」 進化成「有邏輯的系統」的關鍵一步。

阅读文章 →
Java 更新于 2026-08-14

陣列

想像你是老師,要記錄全班 100 位學生的成績。用上一章的知識,你得宣告 score1、score2 一路寫到 score100——光宣告就一百 行,想算平均還得把一百個變數名字全部加起來。這顯然不對勁。程式世界的 解法是「陣列」(array):一排連續的格子,共用一個名字,用編號區分彼此。 一個變數,就能管理一百筆、一萬筆資料。

阅读文章 →
Java 更新于 2026-08-14

方法

寫到現在,你的 main 方法應該越來越長了——計算、驗證、輸出全部擠在 一起,想重複某段邏輯只能複製貼上。複製貼上是程式設計的萬惡之源: 同一段邏輯散落多處,改需求時漏改一處就是臭蟲。業界把解藥稱為 DRY 原則(Don't Repeat Yourself,別重複你自己),而 Java 實踐 DRY 的 基本工具就是「方法」(method):把一段有名字的邏輯封裝起來,需要時 呼叫名字即可。

阅读文章 →
Java 更新于 2026-08-14

字串處理

回顧一下:我們其實從第 1 章的 "Hello, World!" 開始就天天在用 字串(String)了。字串是程式與人類交會的地方——使用者輸入的 是文字,網頁與報表輸出的是文字,檔案與網路傳輸的內容大多也是文字。 可以說,實務程式有一半的工作是在「搬運與加工文字」,字串因此是所有 型別中方法最豐富、使用頻率最高的一個。

阅读文章 →
Java 更新于 2026-08-14

物件導向入門

本冊的壓軸登場。到目前為止,我們的程式由「零散的變數」與「處理它們的 方法」組成——這種風格稱為程序式程式設計。它應付小程式綽綽有餘,但當 資料一多、關係一複雜,變數與方法就會像沒有收納的房間一樣失控。物件 導向(Object-Oriented Programming,OOP)是 Java 給出的收納哲學: 把資料與操作資料的行為,打包成一個個「物件」。

阅读文章 →
Java 更新于 2026-08-14

教材範例程式碼

三冊教材中所有章節的範例程式,已抽出為可獨立編譯執行的 .java 檔案, 並保留書中的繁體中文教學註解。目錄結構與書中章節一一對應:

阅读文章 →
Java 更新于 2026-08-14

進階篇範例程式

本目錄收錄《Java 程式設計完整學習教材》進階篇 ch01~ch08 全部 82 個範例, 皆可獨立編譯(已於 OpenJDK 21 驗證),並保留書中的繁體中文教學註解。 每個檔案第一行的 // 出處:… 註明對應的章節。

阅读文章 →
Java 更新于 2026-08-14

初級篇範例程式

本目錄收錄《Java 程式設計完整學習教材》初級篇第 1〜8 章的全部範例程式, 每章一個目錄(與 .tex 檔名一致),每個檔案都可獨立編譯執行,並逐字保留 書中的繁體中文教學註解。每個檔案第一行的「出處」註解標明對應章節。

阅读文章 →
Java 更新于 2026-08-14

中級篇範例程式

本目錄收錄《Java 程式設計完整學習教材》中級篇 ch01〜ch08 的全部範例, 每個檔案開頭都註明出處章節,書中的中文教學註解逐字保留。

阅读文章 →
Java 更新于 2026-08-14

如何使用本教材

《Java 程式設計完整學習教材》共分三冊,對應三個學習階段:初級篇、中級篇與進階篇。 每一章都包含觀念講解、大量附詳細中文註解的範例程式、預期執行結果、常見錯誤提醒, 以及章末的動手練習。三冊循序漸進,完整走完即具備從零基礎到資深工程師所需的 Java 核心知識。

阅读文章 →
Java 更新于 2026-08-14

封裝與繼承

在初級篇裡,你已經會定義類別、建立物件、撰寫建構子與方法。本章要把物件導向真正的威力釋放出來:封裝(encapsulation)讓每個物件為自己的資料把關,使「不合法的狀態」根本不可能出現;繼承(inheritance)讓新類別站在既有類別的肩膀上,重複利用並擴充其行為。這兩個概念是物件導向三大支柱的前兩根,第三根「多型」將在下一章登場。

阅读文章 →
Java 更新于 2026-08-14

多型、抽象類別與介面

上一章的繼承讓 Manager 重複利用了 Employee 的程式碼,但繼承真正的殺手級應用不是省程式碼,而是本章的主角——多型(polymorphism):讓同一個呼叫式,在不同物件身上展現不同行為。有了多型,新增一種員工、一種形狀、一種付款方式時,既有的處理邏輯一行都不用改。這是物件導向「對修改封閉、對擴充開放」精神的技術基礎。

阅读文章 →
Java 更新于 2026-08-14

例外處理

程式不會永遠走在快樂路徑上:檔案可能不存在、輸入可能是亂碼、餘額可能不足。一個系統的品質,往往不是看它正常運作時多優雅,而是看它出錯時多可靠。Java 的例外(exception)機制把「錯誤的表達、傳遞與處理」從一般的回傳值中獨立出來,讓錯誤既不會被忽略,也不會淹沒主要邏輯。

阅读文章 →
Java 更新于 2026-08-14

集合框架

初級篇的陣列有兩個天生的限制:長度固定(建立後不能增減,塞滿了得手動搬家)與功能陽春(搜尋、去重、鍵值對應都要自己寫迴圈)。Java 的集合框架(Collections Framework)用一組精心設計的介面與實作類別解決這些問題:容量自動成長、常用操作一應俱全,而且以介面為中心,換一種實作不必改動使用端的程式。

阅读文章 →
Java 更新于 2026-08-14

泛型

上一章你已經在使用泛型:List<String> 保證清單裡只有字串。本章換到另一邊,學會設計泛型——寫出像 ArrayList<E> 那樣「一份程式碼、服務所有型別」的類別與方法。泛型是 Java 5 引入的編譯期機制,核心理念只有一句話:讓編譯器在寫程式的當下就抓到型別錯誤,而不是讓使用者在執行期看到程式爆炸。

阅读文章 →