內容簡介
本書是暢銷書《C 語言教學手冊》姊妹作,做為帶您進入 Java 程式語言世界的墊腳石,從 Java 的基礎開始,循序漸進地引導您學習 Java 程式設計,然後一步步地深入瞭解 Java 的應用。透過本書,您將掌握 Java 的基本語法、物件導向程式設計(OOP)的概念與實作,以及 Java 集合物件、多執行緒等進階主題與應用。
本書經過歷次改版,去蕪存菁,在實作上更與時俱進,使用廣受業界工程師喜愛的 Visual Studio Code(以下簡稱 VSCode) 作為開發環境,VSCode 具有跨平台、跨語言、輕量、豐富延伸套件及內建除錯器的特色,不但可以提升學習成效,也能與未來業界接軌。
本書撰寫過程中經過多位學生試讀並實作總數超過 300 題的習題,參考相當多的建議修正,使得內容具親和性、學習起來更加得心應手。
本書特色:
□ 使用 VSCode 開發與業界接軌
□ 超過 300 題習題反覆練到會
□ 詳細圖解說明觀念最清晰
□ 多執行緒、集合等進階主題
□ 經課堂試教、試讀、試做驗證
本書經過歷次改版,去蕪存菁,在實作上更與時俱進,使用廣受業界工程師喜愛的 Visual Studio Code(以下簡稱 VSCode) 作為開發環境,VSCode 具有跨平台、跨語言、輕量、豐富延伸套件及內建除錯器的特色,不但可以提升學習成效,也能與未來業界接軌。
本書撰寫過程中經過多位學生試讀並實作總數超過 300 題的習題,參考相當多的建議修正,使得內容具親和性、學習起來更加得心應手。
本書特色:
□ 使用 VSCode 開發與業界接軌
□ 超過 300 題習題反覆練到會
□ 詳細圖解說明觀念最清晰
□ 多執行緒、集合等進階主題
□ 經課堂試教、試讀、試做驗證
內容目錄
第一章 認識 Java
1.1 歷史的回顧
1.1.1 Java 的發展歷史
1.1.2 Java 的特點
1.2 Java 的虛擬機器與未來
1.3 安裝 VSCode 並撰寫第一個Java程式
1.4 設定 VSCode
習題
第二章 簡單的 Java 程式
2.1 一個簡單的例子
2.2 變數
2.2.1 變數的宣告與設值
2.2.2 變數命名的規則
2.3 輸出函數 println()
2.4 關鍵字及識別字
2.4.1 關鍵字
2.4.2 識別字
2.5 當執行發生錯誤時
2.5.1 語法錯誤
2.5.2 語意錯誤
2.6 提高程式的可讀性
習題
第三章 變數與資料型別
3.1資料型別與變數
3.1.1 資料型別
3.1.2 變數的宣告與設值
3.2整數型別
3.2.1 宣告整數變數並設定初值
3.2.2 以二進位、八進位和十六進位表示整數
3.2.3 簡單易記的代碼
3.2.4 溢位的發生
3.3 浮點數型別
3.4 字元型別
3.5 布林型別
3.6 格式化列印資料
3.7 由鍵盤輸入資料
習題
第四章 運算子、運算式與敘述
4.1 運算式與運算子
4.1.1 算術運算子
4.1.2 設定運算子
4.1.3 遞增與遞減運算子
4.1.4 關係運算子
4.1.5 邏輯運算子
4.1.6 位元運算子
4.2 運算子的優先順序
4.3 資料型別轉換
4.3.1 自動型別轉換
4.3.2 強制型別轉換
習題
第五章 程式流程控制
5.1 程式的結構設計
5.2 選擇性敘述
5.2.1 if 敘述
5.2.2 if-else 敘述
5.2.3 if-else 的簡潔版─條件運算子
5.2.4 更多的選擇─巢狀 if 敘述
5.2.5 更好用的多重選擇─switch 敘述
5.3 for 迴圈
5.3.1 簡單的 for 迴圈
5.3.2 在 VSCode 裡偵錯迴圈
5.3.3 for 迴圈裡的區域變數
5.3.4 初值與判斷條件的設定
5.4 while與 do-while 迴圈
5.4.1 while 迴圈
5.4.2 do-while 迴圈
5.5 巢狀迴圈
5.6 迴圈的跳離
5.6.1 break 敘述
5.6.2 continue 敘述
習題
第六章 陣列
6.1 一維陣列
6.1.1 一維陣列的宣告與記憶體的配置
6.1.2 陣列元素的存取
6.1.3 陣列初值的設定
6.1.4 利用 for each 走訪陣列裡的元素
6.2 二維陣列
6.2.1 二維陣列與初值的設定
6.2.2 二維陣列元素的走訪
6.2.3 每列元素個數不同的二維陣列
6.3 多維陣列
6.4 陣列變數的設值與比較
習題
第七章 函數
7.1 函數的基本概念
7.1.1 簡單的範例
7.1.2 函數的引數與傳回值
7.1.3 傳遞給函數的引數
7.2 陣列的傳遞
7.2.1 傳遞一維陣列
7.2.2 傳遞二維陣列
7.2.3 傳回陣列的函數
7.2.4 陣列的傳遞機制
7.3 遞迴
7.4 函數的多載
習題
第八章 類別
8.1 認識類別
8.1.1 類別的基本概念
8.1.2 類別的定義語法
8.1.3 建立新的物件
8.1.4 使用類別來設計完整的程式
8.1.5 同時建立多個物件
8.2 函數成員的使用
8.2.1 定義與使用函數成員
8.2.2 另一個簡單的範例
8.2.3 資料成員的存取方式
8.2.4 函數成員的相互呼叫
8.3 引數的傳遞與傳回值
8.3.1 呼叫函數並傳遞引數
8.3.2 傳遞多個引數
8.3.3 沒有傳回值的函數
8.3.4 有傳回值的函數
8.4 函數成員的多載
8.4.1 多載
8.4.2 使用多載常犯的錯誤
8.5 公有成員與私有成員
8.5.1 建立私有資料成員
8.5.2 建立公有函數成員
8.5.3 省略 public 與 private 關鍵字
習題
第九章 類別的進階認識
9.1 建構子
9.1.1 建構子的基本認識
9.1.2 建構子的多載
9.1.3 兩個建構子之間的呼叫
9.1.4 建構子的公有與私有
9.1.5 建構子的省略
9.2 類別變數與類別函數
9.2.1 實例變數與實例函數
9.2.2 類別變數
9.2.3 類別函數
9.2.4 main() 函數之前的 static 修飾子
9.2.5 類別函數使用的限制
9.3 物件變數的使用
9.3.1 設值給物件變數
9.3.2 傳遞物件變數到函數
9.3.3 從函數傳回物件變數
9.4 利用陣列來儲存物件
9.4.1 建立物件陣列的範例
9.4.2 傳遞物件陣列到函數裡
9.5 內部類別
9.5.1 內部類別的撰寫
9.5.2 取用內部類別的成員
9.6 回收記憶體
習題
第十章 類別的繼承
10.1 繼承的基本概念
10.1.1 簡單的繼承範例
10.1.2 建構子的呼叫
10.1.3 使用建構子常見的錯誤
10.2 保護成員
10.3 改寫
10.3.1 改寫父類別的函數
10.3.2 以父類別的變數存取子類別物件的成員
10.4 再談 super 與 this
10.5 物件導向裡的 is-a 與 has-a
10.6 設定終止繼承
10.7 類別之源的 Object 類別
習題
第十一章 抽象類別與介面
11.1 抽象類別
11.1.1 定義抽象類別
11.1.2 抽象類別的實作
11.1.3 用抽象類別型態的變數來建立物件
11.1.4 使用抽象類別的注意事項
11.2 介面的使用
11.3 實現多重繼承─多重實作
11.4 介面的繼承
11.5 類別關係的判別─instanceof
習題
第十二章 大型程式的發展與常用的類別庫
12.1 檔案的分割
12.2 使用 package
12.2.1 package 的基本概念
12.2.2 將不同檔案中的類別納入同一個 package 中
12.3 存取不同 package 裡的類別
12.3.1 簡單的範例
12.3.2 public、 private 與 protected 修飾子的角色
12.3.3 匯入packages
12.4 建構 package 的階層關係
12.5 VSCode 的 Project 管理
12.5.1 VSCode 的 project
12.5.2 VSCode 的工作區
12.6 Java 常用的類別庫
12.6.1 有關字串的類別庫
12.6.2 StringBuffer 類別庫
12.6.3 wrapper class
12.6.4 使用 Math 類別
習題
第十三章 例外處理
13.1 例外的基本觀念
13.1.1 為何需要例外處理?
13.1.2 簡單的例外範例
13.1.3 例外的處理
13.1.4 例外處理機制的回顧
13.2 例外類別的繼承架構
13.3 拋出例外
13.3.1 主動拋出例外
13.3.2 預期的例外由指定函數拋出
13.4 自己撰寫例外類別
13.5 拋出輸出/輸入的例外類別
13.5.1 拋出輸入型態不合的例外
13.5.2 拋出 IOException 例外類別
習題
第十四章 檔案處理
14.1 關於串流
14.2 檔案的基本處理
14.2.1 讀取檔案的內容--使用 FileReader
14.2.2 將資料寫入檔案--使用 FileWriter 類別
14.3 利用緩衝區來讀寫資料
14.3.1 從緩衝區讀取資料--使用 BufferedReader 類別
14.3.2 將資料寫入緩衝區--使用 BufferedWriter 類別
14.4 使用 InputStream 與 OutputStream 類別
14.4.1 讀取檔案的內容--使用 FileInputStream 類別
14.4.2 將資料寫入檔案--使用 FileOutputStraem 類別
習題
第十五章 多執行緒
15.1 認識執行緒
15.2 實作 Runnable 介面來建立執行緒
15.3 執行緒的管理
15.3.1 執行緒的生命週期
15.3.2 讓執行緒小睡片刻
15.3.3 等待執行緒
15.3.4 執行緒的優先順序
15.4 同步處理
習題
第十六章 Java collection 集合物件
16.1 認識集合物件
16.1.1 認識 collection 架構
16.1.2 簡單的範例
16.1.3 泛型與 collection
16.1.4 集合的特性
16.2 Set 介面
16.2.1 HashSet 類別
16.2.2 TreeSet 類別
16.3 List 介面
16.3.1 LinkedList 類別
16.3.2 ArrayList 類別
16.4 實作 Map 介面
16.4.1 HashMap 類別
16.4.2 TreeMap 類別
16.5 走訪集合物件的元素
16.5.1 使用 Iterator 走訪元素
16.5.2 使用 ListIterator 走訪元素
習題
第十七章 圖形使用者介面與事件處理
17.1 圖形使用者介面概述
17.2 使用 Swing 物件
17.2.1 Swing 的 JFrame 視窗
17.2.2 按鈕與標籤
17.2.3 使用 JLabel 標籤
17.3 版面配置與管理
17.3.1 使用 BorderLayout 類別
17.3.2 使用 FlowLayout 類別
17.4 委派事件模式
17.4.1 簡單的範例
17.4.2 定義內部類別當成傾聽者
17.4.3 認識事件處理類別
17.5 更多類型的元件
17.5.1 核取方塊
17.5.2 捲軸
17.5.3 文字處理
習題
第十八章 網路程式設計
18.1 網址與 InetAddress 類別的使用
18.2 認識 URL
18.3 建立主從架構程式 -- 使用 Socket 類別
習題
附錄 A ASCII 碼表
附錄 B 事件處理類別
中文索引
英文索引
1.1 歷史的回顧
1.1.1 Java 的發展歷史
1.1.2 Java 的特點
1.2 Java 的虛擬機器與未來
1.3 安裝 VSCode 並撰寫第一個Java程式
1.4 設定 VSCode
習題
第二章 簡單的 Java 程式
2.1 一個簡單的例子
2.2 變數
2.2.1 變數的宣告與設值
2.2.2 變數命名的規則
2.3 輸出函數 println()
2.4 關鍵字及識別字
2.4.1 關鍵字
2.4.2 識別字
2.5 當執行發生錯誤時
2.5.1 語法錯誤
2.5.2 語意錯誤
2.6 提高程式的可讀性
習題
第三章 變數與資料型別
3.1資料型別與變數
3.1.1 資料型別
3.1.2 變數的宣告與設值
3.2整數型別
3.2.1 宣告整數變數並設定初值
3.2.2 以二進位、八進位和十六進位表示整數
3.2.3 簡單易記的代碼
3.2.4 溢位的發生
3.3 浮點數型別
3.4 字元型別
3.5 布林型別
3.6 格式化列印資料
3.7 由鍵盤輸入資料
習題
第四章 運算子、運算式與敘述
4.1 運算式與運算子
4.1.1 算術運算子
4.1.2 設定運算子
4.1.3 遞增與遞減運算子
4.1.4 關係運算子
4.1.5 邏輯運算子
4.1.6 位元運算子
4.2 運算子的優先順序
4.3 資料型別轉換
4.3.1 自動型別轉換
4.3.2 強制型別轉換
習題
第五章 程式流程控制
5.1 程式的結構設計
5.2 選擇性敘述
5.2.1 if 敘述
5.2.2 if-else 敘述
5.2.3 if-else 的簡潔版─條件運算子
5.2.4 更多的選擇─巢狀 if 敘述
5.2.5 更好用的多重選擇─switch 敘述
5.3 for 迴圈
5.3.1 簡單的 for 迴圈
5.3.2 在 VSCode 裡偵錯迴圈
5.3.3 for 迴圈裡的區域變數
5.3.4 初值與判斷條件的設定
5.4 while與 do-while 迴圈
5.4.1 while 迴圈
5.4.2 do-while 迴圈
5.5 巢狀迴圈
5.6 迴圈的跳離
5.6.1 break 敘述
5.6.2 continue 敘述
習題
第六章 陣列
6.1 一維陣列
6.1.1 一維陣列的宣告與記憶體的配置
6.1.2 陣列元素的存取
6.1.3 陣列初值的設定
6.1.4 利用 for each 走訪陣列裡的元素
6.2 二維陣列
6.2.1 二維陣列與初值的設定
6.2.2 二維陣列元素的走訪
6.2.3 每列元素個數不同的二維陣列
6.3 多維陣列
6.4 陣列變數的設值與比較
習題
第七章 函數
7.1 函數的基本概念
7.1.1 簡單的範例
7.1.2 函數的引數與傳回值
7.1.3 傳遞給函數的引數
7.2 陣列的傳遞
7.2.1 傳遞一維陣列
7.2.2 傳遞二維陣列
7.2.3 傳回陣列的函數
7.2.4 陣列的傳遞機制
7.3 遞迴
7.4 函數的多載
習題
第八章 類別
8.1 認識類別
8.1.1 類別的基本概念
8.1.2 類別的定義語法
8.1.3 建立新的物件
8.1.4 使用類別來設計完整的程式
8.1.5 同時建立多個物件
8.2 函數成員的使用
8.2.1 定義與使用函數成員
8.2.2 另一個簡單的範例
8.2.3 資料成員的存取方式
8.2.4 函數成員的相互呼叫
8.3 引數的傳遞與傳回值
8.3.1 呼叫函數並傳遞引數
8.3.2 傳遞多個引數
8.3.3 沒有傳回值的函數
8.3.4 有傳回值的函數
8.4 函數成員的多載
8.4.1 多載
8.4.2 使用多載常犯的錯誤
8.5 公有成員與私有成員
8.5.1 建立私有資料成員
8.5.2 建立公有函數成員
8.5.3 省略 public 與 private 關鍵字
習題
第九章 類別的進階認識
9.1 建構子
9.1.1 建構子的基本認識
9.1.2 建構子的多載
9.1.3 兩個建構子之間的呼叫
9.1.4 建構子的公有與私有
9.1.5 建構子的省略
9.2 類別變數與類別函數
9.2.1 實例變數與實例函數
9.2.2 類別變數
9.2.3 類別函數
9.2.4 main() 函數之前的 static 修飾子
9.2.5 類別函數使用的限制
9.3 物件變數的使用
9.3.1 設值給物件變數
9.3.2 傳遞物件變數到函數
9.3.3 從函數傳回物件變數
9.4 利用陣列來儲存物件
9.4.1 建立物件陣列的範例
9.4.2 傳遞物件陣列到函數裡
9.5 內部類別
9.5.1 內部類別的撰寫
9.5.2 取用內部類別的成員
9.6 回收記憶體
習題
第十章 類別的繼承
10.1 繼承的基本概念
10.1.1 簡單的繼承範例
10.1.2 建構子的呼叫
10.1.3 使用建構子常見的錯誤
10.2 保護成員
10.3 改寫
10.3.1 改寫父類別的函數
10.3.2 以父類別的變數存取子類別物件的成員
10.4 再談 super 與 this
10.5 物件導向裡的 is-a 與 has-a
10.6 設定終止繼承
10.7 類別之源的 Object 類別
習題
第十一章 抽象類別與介面
11.1 抽象類別
11.1.1 定義抽象類別
11.1.2 抽象類別的實作
11.1.3 用抽象類別型態的變數來建立物件
11.1.4 使用抽象類別的注意事項
11.2 介面的使用
11.3 實現多重繼承─多重實作
11.4 介面的繼承
11.5 類別關係的判別─instanceof
習題
第十二章 大型程式的發展與常用的類別庫
12.1 檔案的分割
12.2 使用 package
12.2.1 package 的基本概念
12.2.2 將不同檔案中的類別納入同一個 package 中
12.3 存取不同 package 裡的類別
12.3.1 簡單的範例
12.3.2 public、 private 與 protected 修飾子的角色
12.3.3 匯入packages
12.4 建構 package 的階層關係
12.5 VSCode 的 Project 管理
12.5.1 VSCode 的 project
12.5.2 VSCode 的工作區
12.6 Java 常用的類別庫
12.6.1 有關字串的類別庫
12.6.2 StringBuffer 類別庫
12.6.3 wrapper class
12.6.4 使用 Math 類別
習題
第十三章 例外處理
13.1 例外的基本觀念
13.1.1 為何需要例外處理?
13.1.2 簡單的例外範例
13.1.3 例外的處理
13.1.4 例外處理機制的回顧
13.2 例外類別的繼承架構
13.3 拋出例外
13.3.1 主動拋出例外
13.3.2 預期的例外由指定函數拋出
13.4 自己撰寫例外類別
13.5 拋出輸出/輸入的例外類別
13.5.1 拋出輸入型態不合的例外
13.5.2 拋出 IOException 例外類別
習題
第十四章 檔案處理
14.1 關於串流
14.2 檔案的基本處理
14.2.1 讀取檔案的內容--使用 FileReader
14.2.2 將資料寫入檔案--使用 FileWriter 類別
14.3 利用緩衝區來讀寫資料
14.3.1 從緩衝區讀取資料--使用 BufferedReader 類別
14.3.2 將資料寫入緩衝區--使用 BufferedWriter 類別
14.4 使用 InputStream 與 OutputStream 類別
14.4.1 讀取檔案的內容--使用 FileInputStream 類別
14.4.2 將資料寫入檔案--使用 FileOutputStraem 類別
習題
第十五章 多執行緒
15.1 認識執行緒
15.2 實作 Runnable 介面來建立執行緒
15.3 執行緒的管理
15.3.1 執行緒的生命週期
15.3.2 讓執行緒小睡片刻
15.3.3 等待執行緒
15.3.4 執行緒的優先順序
15.4 同步處理
習題
第十六章 Java collection 集合物件
16.1 認識集合物件
16.1.1 認識 collection 架構
16.1.2 簡單的範例
16.1.3 泛型與 collection
16.1.4 集合的特性
16.2 Set 介面
16.2.1 HashSet 類別
16.2.2 TreeSet 類別
16.3 List 介面
16.3.1 LinkedList 類別
16.3.2 ArrayList 類別
16.4 實作 Map 介面
16.4.1 HashMap 類別
16.4.2 TreeMap 類別
16.5 走訪集合物件的元素
16.5.1 使用 Iterator 走訪元素
16.5.2 使用 ListIterator 走訪元素
習題
第十七章 圖形使用者介面與事件處理
17.1 圖形使用者介面概述
17.2 使用 Swing 物件
17.2.1 Swing 的 JFrame 視窗
17.2.2 按鈕與標籤
17.2.3 使用 JLabel 標籤
17.3 版面配置與管理
17.3.1 使用 BorderLayout 類別
17.3.2 使用 FlowLayout 類別
17.4 委派事件模式
17.4.1 簡單的範例
17.4.2 定義內部類別當成傾聽者
17.4.3 認識事件處理類別
17.5 更多類型的元件
17.5.1 核取方塊
17.5.2 捲軸
17.5.3 文字處理
習題
第十八章 網路程式設計
18.1 網址與 InetAddress 類別的使用
18.2 認識 URL
18.3 建立主從架構程式 -- 使用 Socket 類別
習題
附錄 A ASCII 碼表
附錄 B 事件處理類別
中文索引
英文索引
ISBN: 9789863127536