15 年的淬鍊,成就「初學 Java 的最佳入門教材」
本書從第一版出版至今已超過 15 個年頭, 累積銷量超過 5 萬冊, 是最受好評的 Java 入門教材。期間配合 Java 版本的演進歷經多次改版, 每次改版都匯集了眾多讀者、教師的意見, 適當增加了新的題材與語法, 同時也因應不同世代的需求, 刪除過時的內容, 務求讓書中內容更簡明易懂、更符合初學者的需求。
Java 語言一直是企業界最愛用的語言, 因此我們期許讀者不僅撰寫出可編譯、可執行的 Java 程式, 更重要的是要瞭解良好的程式設計方法, 以及軟體設計的邏輯思維, 才能快速融入開發團隊, 成為符合業界需求的程式設計師。
具備良好的程式設計方法, 建立正確的物件導向概念, 才能真正寫好 Java 程式
Java 是物件導向的程式語言, 學習正確的物件導向觀念非常重要, 本書在介紹類別、物件、繼承、介面、套件、類別庫、集合等主題時, 均特別著重觀念的解析與釐清, 並引用各種實例來演示及驗證所學, 以確保能學會最紮實的物件導向觀念。
書中以圖文搭配豐富的範例進行解說, 處處可見「正確」、「錯誤」的實作案例對照, 清楚展示各種語言元素的變化用法與差異, 讓讀者從「做」中體會物件導向程式的精髓, 非常適合作為初學入門、紮穩基礎的第一本書。
本書特色:
★ 本書內容適用 JDK 17/11 等主要版本 ★
◆ 清楚詳盡的語法解說
針對 Java 的資料型別、變數存取、及各種語法均有清楚詳盡的解說, 各單元均提供眾多的範例程式, 以強化學習效果並培養程式撰寫能力, 非常適合做為初學者的入門學習書。
◆ 最紮實的物件導向觀念
最易懂的物件導向觀念, 引用各種實例來介紹類別、物件、繼承、介面、套件、類別庫、集合的使用方式, 並釐清容易混淆的重要觀念, 以確保能紮穩正確清楚的物件導向觀念。
◆ 業界常用的進階語法與實用主題
除了基本語法和觀念外, 也涵括了字串的規則表示法、Varargs 可變參數、基本型別的自動封箱 (Auto Boxing) 與拆箱 (Unboxing)、static 成員、抽象類別、匿名類別、Lambda 運算式、多執行緒、Collection 類別庫、Java AWT/Swing 圖形介面設計、2D 繪圖等實用主題。
◆ 精心設計的 3 種強化學習單元
每章最後均包含以下單元:
(1)綜合演練-提供多個應用實例, 以觀摩如何將該章所學靈活運用於程式中。
(2)學習評量-進行重要語法及觀念的測驗, 以加深學習印象並導正觀念。
(3)程式練習-讓您實地從做中學, 以確實掌握程式設計的技巧與能力。
作者簡介:
施威銘研究室
持續專注科技教育, 卓越的品質是我們的堅持。致力推廣「Learning by doing 從學理到實作」, 希望培養更多的 AI 人才, 實踐學以致用的理想。
目錄
第 1 章 Java 簡介
1-1 Java 程式語言的特色
1-2 Java 平台簡介
1-3 Android 與 Java
第 2 章 初探 Java
2-1 撰寫第一個 Java 程式
2-2 使用 Eclipse 建立、編輯、與執行 Java 程式
2-3 Java 程式的組成要素
第 3 章 變數
3-1 甚麼是變數?
3-2 資料型別 (Data Types)
3-3 基本型別 (Primitive Data Types)
3-4 參照型別 (Reference Data Types)
3-5 宣告變數的技巧
3-6 常數
3-7 良好的命名方式
第 4 章 運算式 (Expression)
4-1 甚麼是運算式?
4-2 指定算符 (Assignment Operator)
4-3 數值運算
4-4 布林運算 (Logical Operation)
4-5 位元運算 (Bitwise Operation)
4-6 運算式的運算順序
4-7 資料的轉型 (Type Conversion)
4-8 其他算符
4-9 取得輸入
第 5 章 流程控制 (一):條件分支
5-1 甚麼是流程控制?
5-2 if 條件分支
5-3 switch 多條件分支
5-4 綜合演練
5-4-1 判斷是否可為三角形的三邊長
5-4-2 電影票票價計算
5-4-3 利用手機序號判斷製造年份
第 6 章 流程控制 (二):迴圈
6-1 for 迴圈
6-2 while 迴圈
6-3 do/while 迴圈
6-4 巢狀迴圈
6-5 變更迴圈流程的 break 與 continue
6-6 綜合演練
6-6-1 迴圈與 if 條件式混合應用:判斷質數
6-6-2 Scanner 類別的輸入檢查
6-6-3 各種迴圈的混合應用:計算階乘
第 7 章 陣列 (Array)
7-1 甚麼是陣列?
7-2 陣列的配置與初值設定
7-3 多維陣列 (Multi-Dimensional Array)
7-4 參照型別 (Reference Data Type)
7-5 命令列參數:argv 陣列
7-6 綜合演練
7-6-1 將陣列運用在查表上
7-6-2 找出最大與最小值.
7-6-3 搜尋二維陣列
7-6-4 排序(Sorting)
7-6-5 利用陣列儲存計算結果
第 8 章 物件導向程式設計 ((Object-Oriented Programming)
8-1 認識類別與物件
8-1-1 類別 (Class) 與物件 -- Java 舞台劇的角色與演員
8-1-2 程式流程 -- Java 舞台劇的劇本
8-1-3 main () 方法 -- Java 舞台劇的舞台
8-2 定義類別與建立物件
8-2-1 定義類別
8-2-2 成員變數 -- 類別的屬性
8-2-3 方法 (Method) -- 類別的行為
8-2-4 使用物件
8-2-5 物件的銷毀與回收.
8-3 方法的進階應用
8-3-1 方法的參數
8-3-2 方法的傳回值
8-3-3 參數的傳遞方式
8-3-4 變數的有效範圍(Scope)
8-3-5 匿名陣列 (Anonymous Array)
8-3-6 遞迴 (Recursive)
8-4 方法的多重定義 (Overloading)
8-4-1 定義同名方法
8-4-2 多重定義方法時的注意事項
8-5 綜合演練
8-5-1 用遞迴求階乘
8-5-2 Fibonacci 數列
8-5-3 快速排序法 (Quick Sort)
8-5-4 河內之塔遊戲 (Hanoi Tower)
第 9 章 物件的建構
9-1 建構方法 (Constructor)
9-1-1 預設建構方法 (Default Constructor)
9-1-2 自行定義建構方法.
9-1-3 建構方法的多重定義 (Overloading)
9-1-4 this 保留字
9-2 封裝與資訊隱藏
9-2-1 類別成員的存取控制
9-2-2 為成員變數撰寫存取方法
9-2-3 傳回成員物件的資訊
9-3 static 共享成員變數
9-3-1 static 存取控制
9-3-2 使用類別名稱存取 static 成員變數
9-3-3 static 初始區塊
9-3-4 static 方法 ( 靜態方法 )
9-3-5 final 存取控制
9-3-6 成員變數的預設值.
9-4 綜合演練
9-4-1 提供輔助工具的類別
9-4-2 善用多重定義
第 10 章 字串(String)
10-1 字串的產生
10-2 String 類別的方法
10-3 StringBuffer 與 StringBuilder 類別.
10-4 規則表示法 (Regular Expression)
10-5 綜合演練
10-5-1 檢查身份證字號的格式
10-5-2 檢核身份證字號
第 11 章 繼承(Inheritance)
11-1 甚麼是繼承?
11-1-1 不同物件的相似性
11-1-2 繼承的語法
11-1-3 繼承關係中的物件建構
11-1-4 再論資訊隱藏:使用 protected 的時機
11-1-5 多層的繼承 (Hierarchical Inheritance)
11-2 方法的繼承、重新定義、與多形
11-2-1 方法的繼承
11-2-2 方法的重新定義 (Overridding)
11-2-3 多重定義父類別的方法
11-2-4 多形 (Polymorphism)
11-2-5 多形的效用
11-3 繼承的注意事項
11-3-1 繼承與存取控制
11-3-2 定義同名的成員變數
11-3-3 不能被修改的方法 -- final 存取限制
11-3-4 建構方法不能被繼承
11-3-5 類別間的 is-a 與 has-a 關係
11-4 Object 類別與基本資料類別
11-4-1 類別的始祖 -- Object 類別
11-4-2 代表基本型別的類別
11-5 綜合演練
11-5-1 傳遞不定數量參數 -- 使用陣列
11-5-2 傳遞不定數量參數 -- Varargs 機制
11-5-3 傳遞任意型別的參數
第 12 章 抽象類別 (Abstract Class)、介面 (Interface)、內部類別 (Inner Class)
12-1 抽象類別 (Abstract Class)
12-1-1 甚麼是抽象類別?
12-1-2 抽象方法 (Abstract Method)
12-1-3 抽象類別、抽象方法與繼承關係
12-2 介面 (Interface)
12-2-1 定義介面
12-2-2 介面的實作
12-2-3 介面中的成員變數
12-3 介面的繼承
12-3-1 簡單的繼承
12-3-2 介面的多重繼承
12-4 內部類別 (Inner Class)
12-4-1 甚麼是內部類別?
12-4-2 匿名類別 (Anonymous Class)
12-4-3 Lambda 運算式
12-4-4 靜態巢狀類別 (Static Nested Class)
12-5 綜合演練
12-5-1 撰寫通用於多種類別的程式
12-5-2 擔任物件之間的溝通橋樑
第 13 章 套件(Packages)
13-1 程式的切割
13-2 分享寫好的類別
13-2-1 建立套件
13-2-2 編譯包裝在套件中的類別
13-2-3 使用套件中的類別
13-3 子套件以及存取控制關係
13-3-1 在套件中建立子套件
13-3-2 使用 import 敘述
13-3-3 套件與存取控制的關係
13-3-4 預設套件 (Default Package)
13-4 綜合演練
13-4-1 加入新的類別到 flag 套件中
13-4-2 Java 標準類別庫
13-4-3 套件的命名
第 14 章 例外處理
14-1 甚麼是例外?
14-2 try/catch/finally 敘述
14-3 拋出例外
14-4 自訂例外類別
14-5 綜合演練
14-5-1 會拋出例外的計算階乘程式
14-5-2 字串大小寫轉換應用
14-5-3 簡單的帳戶模擬程式
第 15 章 多執行緒 (Multithreading)
15-1 甚麼是執行緒?
15-1-1 使用 Thread 類別建立執行緒
15-1-2 使用 Runnable 介面建立執行緒
15-1-3 執行緒的各種狀態
15-2 執行緒的同步 (Synchronization)
15-2-1 多執行緒存取共用資源的問題
15-2-2 使用 synchronized 區塊
15-3 執行緒間的協調
15-3-1 執行緒間相互合作的問題
15-3-2 協調執行緒
15-3-3 避免錯誤的 synchronized 寫法
15-4 綜合演練
第 16 章 資料輸入與輸出
16-1 甚麼是串流?
16-2 Java 串流類別架構
16-3 輸出、輸入資料
16-4 物件的讀寫
16-5 綜合演練
16-5-1 將學生成績資料存檔
16-5-2 讀取學生成績檔並計算平均
第 17 章 Java 標準類別庫
17-1 甚麼是 Java 標準類別庫?
17-2 基本資料類別
17-3 Math 類別
17-4 Java Collections
17-4-1 Collections Framework 簡介
17-4-2 Collection 介面與相關類別
17-4-3 Set 介面與相關類別
17-4-4 List 介面與相關類別
17-4-5 Map 介面與相關類別
17-4-6 Iterator 迭代器
17-5 綜合演練
17-5-1 求任意次方根
17-5-2 利用集合物件產生樂透號碼
17-5-3 陽春型英漢字典
第 18 章 圖形使用者介面
18-1 甚麼是圖形使用者介面?
18-2 Java 的 GUI 基本架構
18-3 GUI 的事件處理
18-4 版面配置管理員
18-5 2D 繪圖
18-6 綜合演練
18-6-1 簡易型三角函數計算器
18-6-2 簡易文字編輯器
附錄 A Eclipse 簡介、下載與安裝
附錄 B 建立學習 Java 的環境
附錄 C 使用 JDK 編譯及執行程式
附錄 D UML 簡介 (Unified Modeling Language)
第 1 章 Java 簡介
1-1 Java 程式語言的特色
1-2 Java 平台簡介
1-3 Android 與 Java
第 2 章 初探 Java
2-1 撰寫第一個 Java 程式
2-2 使用 Eclipse 建立、編輯、與執行 Java 程式
2-3 Java 程式的組成要素
第 3 章 變數
3-1 甚麼是變數?
3-2 資料型別 (Data Types)
3-3 基本型別 (Primitive Data Types)
3-4 參照型別 (Reference Data Types)
3-5 宣告變數的技巧
3-6 常數
3-7 良好的命名方式
第 4 章 運算式 (Expression)
4-1 甚麼是運算式?
4-2 指定算符 (Assignment Operator)
4-3 數值運算
...