內容簡介
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)