- Java平臺概論
1.1 Java 不只是語言
1.1.1 前世今生
1.1.2 三大平臺
1.1.3 JCP 與 JSR
1.1.4 Oracle JDK 與 OpenJDK
1.1.5 建議的學習路徑
1.2 JVM/JRE/JDK
1.2.1 什麼是 JVM?
1.2.2 區分 JRE 與 JDK
1.2.3 下載、安裝 JDK
1.2.4 認識 JDK 安裝內容
1.3 重點複習
- 從 JDK 到 IDE
2.1 從 "Hello, World" 開始
2.1.1 撰寫 Java 原始碼
2.1.2 PATH 是什麼?
2.1.3 JVM(java)與 classpath
2.1.4 編譯器(javac)與 classpath
2.2 管理原始碼與位元碼檔案
2.2.1 編譯器(javac)與 sourcepath
2.2.2 使用 package 管理類別
2.2.3 使用 import 偷懶
2.3 初探模組平臺系統
2.3.1 JVM(java)與 module-path.
2.3.2 編譯器(javac)與 module-path
2.3.3 編譯器(javac)與 module-source-path
2.4 使用IDE
2.4.1 IDE 專案管理基礎
2.4.2 使用了哪個 JRE?
2.4.3 類別檔案版本
2.5 重點複習
- 基礎語法
3.1 型態、變數與運算子
3.1.1 型態
3.1.2 變數
3.1.3 運算子
3.1.4 型態轉換
3.2 流程控制
3.2.1 if..else 條件式
3.2.2 switch 條件式
3.2.3 for 迴圈
3.2.4 while 迴圈
3.2.5 break、continue
3.3 重點複習
課後練習
- 認識物件
4.1 類別與物件
4.1.1 定義類別
4.1.2 使用標準類別
4.1.3 物件指定與相等性
4.2 基本型態包裹器
4.2.1 包裹基本型態
4.2.2 自動裝箱、拆箱
4.2.3 自動裝箱、拆箱的內幕
4.3 陣列物件
4.3.1 陣列基礎
4.3.2 操作陣列物件
4.3.3 陣列複製
4.4 字串物件
4.4.1 字串基礎
4.4.2 字串特性
4.4.3 字串編碼
4.5 查詢Java API 文件
4.6 重點複習
課後練習
- 物件封裝
5.1 何謂封裝?
課後練習
5.1.1 封裝物件初始流程
5.1.2 封裝物件操作流程
5.1.3 封裝物件內部資料
5.2 類別語法細節5.1.2 封裝物件操作流程
5.1.3 封裝物件內部資料
5.2.1 public 權限修飾
5.2.2 關於建構式
5.2.3 建構式與方法重載
5.2.4 使用 this
5.2.5 static 類別成員
5.2.6 不定長度引數
5.2.7 內部類別
5.2.8 傳值呼叫
5.3 重點複習 5.2.2 關於建構式
5.2.3 建構式與方法重載
5.2.4 使用 this
5.2.5 static 類別成員
5.2.6 不定長度引數
5.2.7 內部類別
5.2.8 傳值呼叫
課後練習
- 繼承與多型
6.1 何謂繼承?.
課後練習
6.1.1 繼承共同行為與實作
6.1.2 多型與 is-a
6.1.3 重新定義實作
6.1.4 抽象方法、抽象類別
6.2 繼承語法細節6.1.2 多型與 is-a
6.1.3 重新定義實作
6.1.4 抽象方法、抽象類別
6.2.1 protected 成員
6.2.2 重新定義的細節
6.2.3 再看建構式
6.2.4 再看 final 關鍵字
6.2.5 java.lang.Object
6.2.6 關於垃圾收集
6.2.7 再看抽象類別
6.3 重點複習6.2.2 重新定義的細節
6.2.3 再看建構式
6.2.4 再看 final 關鍵字
6.2.5 java.lang.Object
6.2.6 關於垃圾收集
6.2.7 再看抽象類別
課後練習
- 介面與多型
7.1 何謂介面?
課後練習
7.1.1 使用介面定義行為
7.1.2 行為的多型
7.1.3 解決需求變化
7.2 介面語法細節7.1.2 行為的多型
7.1.3 解決需求變化
7.2.1 介面的預設
7.2.2 匿名內部類別
7.2.3 使用 enum 列舉常數
7.3 重點複習7.2.2 匿名內部類別
7.2.3 使用 enum 列舉常數
課後練習
- 例外處理
8.1 語法與繼承架構
課後練習
8.1.1 使用 try、catch
8.1.2 例外繼承架構
8.1.3 要抓還是要拋?
8.1.4 貼心還是造成麻煩?
8.1.5 認識堆疊追蹤
8.1.6 關於 assert
8.2 例外與資源管理8.1.2 例外繼承架構
8.1.3 要抓還是要拋?
8.1.4 貼心還是造成麻煩?
8.1.5 認識堆疊追蹤
8.1.6 關於 assert
8.2.1 使用 finally
8.2.2 自動嘗試關閉資源
8.2.3 java.lang.AutoCloseable 介面
8.3 重點複習8.2.2 自動嘗試關閉資源
8.2.3 java.lang.AutoCloseable 介面
課後練習
- Collection 與 Map
9.1 使用Collection 收集物件
課後練習
9.1.1 認識 Collection 架構
9.1.2 具有索引的 List
9.1.3 內容不重複的 Set
9.1.4 支援佇列操作的 Queue
9.1.5 使用泛型
9.1.6 簡介 Lambda 表示式
9.1.7 Iterable 與 Iterator
9.1.8 Comparable 與 Comparator
9.2 鍵值對應的 Map9.1.2 具有索引的 List
9.1.3 內容不重複的 Set
9.1.4 支援佇列操作的 Queue
9.1.5 使用泛型
9.1.6 簡介 Lambda 表示式
9.1.7 Iterable 與 Iterator
9.1.8 Comparable 與 Comparator
9.2.1 常用 Map 實作類別
9.2.2 走訪 Map 鍵值
9.3 不可變的 Collection 與 Map9.2.2 走訪 Map 鍵值
9.3.1 淺談不可變特性
9.3.2 Collections 的 unmodifiableXXX()方法
9.3.3 List、Set、Map 的 of()方法
9.4 重點複習9.3.2 Collections 的 unmodifiableXXX()方法
9.3.3 List、Set、Map 的 of()方法
課後練習
- 輸入輸出
10.1 InputStream 與 OutputStream
課後練習
10.1.1 串流設計觀念
10.1.2 串流繼承架構
10.1.3 串流處理裝飾器
10.2 字元處理類別10.1.2 串流繼承架構
10.1.3 串流處理裝飾器
10.2.1 Reader 與 Writer 繼承架構
10.2.2 字元處理裝飾器
10.3 重點複習10.2.2 字元處理裝飾器
課後練習
- 執行緒與並行 API
11.1 執行緒
課後練習
11.1.1 簡介執行緒
11.1.2 Thread 與 Runnable
11.1.3 執行緒生命週期
11.1.4 關於ThreadGroup
11.1.5 synchronized 與 volatile
11.1.6 等待與通知
11.2 並行API11.1.2 Thread 與 Runnable
11.1.3 執行緒生命週期
11.1.4 關於ThreadGroup
11.1.5 synchronized 與 volatile
11.1.6 等待與通知
11.2.1 Lock、ReadWriteLock 與
Condition
11.2.2 使用 Executo
11.2.3 簡介並行 Collection
11.3 重點複習11.2.2 使用 Executo
11.2.3 簡介並行 Collection
課後練習
- Lambda
12.1 認識Lambda 語法
課後練習
12.1.1 Lambda 語法概覽
12.1.2 Lambda 表示式與函式介面
12.1.3 Lambda 遇上 this 與 final
12.1.4 方法與建構式參考
12.1.5 介面預設方法
12.2 Functional 與 Stream API12.1.2 Lambda 表示式與函式介面
12.1.3 Lambda 遇上 this 與 final
12.1.4 方法與建構式參考
12.1.5 介面預設方法
12.2.1 使用 Optional 取代 null
12.2.2 標準 API 的函式介面
12.2.3 使用 Stream 進行管線操作
12.2.4 進行 Stream 的 reduce 與 collec
12.2.5 關於 flatMap()方法.
12.2.6 Stream 相關 API
12.2.7 JDK9 Optional 與 Stream 增強
12.3 Lambda、平行化與非同步處理12.2.2 標準 API 的函式介面
12.2.3 使用 Stream 進行管線操作
12.2.4 進行 Stream 的 reduce 與 collec
12.2.5 關於 flatMap()方法.
12.2.6 Stream 相關 API
12.2.7 JDK9 Optional 與 Stream 增強
12.3.1 Stream 與平行化
12.3.2 Arrays 與平行化
12.3.3 CompletableFuture 非同步處理
12.3.4 JDK9 CompletableFuture 增強
12.4 重點複習12.3.2 Arrays 與平行化
12.3.3 CompletableFuture 非同步處理
12.3.4 JDK9 CompletableFuture 增強
課後練習
- 時間與日期
13.1 認識時間與日期
課後練習
13.1.1 時間的度量
13.1.2 年曆簡介
13.1.3 認識時區
13.2 認識Date 與 Calendar13.1.2 年曆簡介
13.1.3 認識時區
13.2.1 時間軸上瞬間的 Date
13.2.2 格式化時間日期的 DateFormat
13.2.3 處理時間日期的 Calendar
13.2.4 設定 TimeZone
13.3 新時間日期 API13.2.2 格式化時間日期的 DateFormat
13.2.3 處理時間日期的 Calendar
13.2.4 設定 TimeZone
13.3.1 機器時間觀點的 API
13.3.2 人類時間觀點的 API
13.3.3 對時間的運算
13.3.4 年曆系統設計
13.4 重點複習13.3.2 人類時間觀點的 API
13.3.3 對時間的運算
13.3.4 年曆系統設計
課後練習
- NIO 與 NIO2
14.1 認識 NIO
課後練習
14.1.1 NIO 概觀
14.1.2 Channel 架構與操作
14.1.3 Buffer 架構與操作
14.2 NIO2 檔案系統14.1.2 Channel 架構與操作
14.1.3 Buffer 架構與操作
14.2.1 NIO2 架構
14.2.2 操作路徑
14.2.3 屬性讀取與設定
14.2.4 操作檔案與資料夾
14.2.5 讀取、走訪資料夾
14.2.6 過濾、搜尋檔案
14.3 重點複習14.2.2 操作路徑
14.2.3 屬性讀取與設定
14.2.4 操作檔案與資料夾
14.2.5 讀取、走訪資料夾
14.2.6 過濾、搜尋檔案
課後練習
- 通用 API
15.1 日誌
15.1.1 簡介日誌 API
15.1.2 指定日誌層級
15.1.3 使用 Handler 與 Formatter
15.1.4 自訂 Handler、Formatter 與 Filter
15.1.5 使用 logging.properties
15.2 國際化基礎15.1.2 指定日誌層級
15.1.3 使用 Handler 與 Formatter
15.1.4 自訂 Handler、Formatter 與 Filter
15.1.5 使用 logging.properties
15.2.1 使用 ResourceBundle
15.2.2 使用 Locale
15.3 規則表示式15.2.2 使用 Locale
15.3.1 簡介規則表示式
15.3.2 Pattern 與 Matcher
15.4 處理數字15.3.2 Pattern 與 Matcher
15.4.1 使用 BigInteger
15.4.2 使用 BigDecimal
15.4.3 數字的格式化
15.5 再談堆疊追蹤15.4.2 使用 BigDecimal
15.4.3 數字的格式化
15.5.1 取得 StackTraceElemen
15.5.2 JDK9 的 Stack-Walking AP
15.6 重點複習15.5.2 JDK9 的 Stack-Walking AP
課後練習
- 整合資料庫
16.1 JDBC 入門
課後練習
16.1.1 簡介 JDBC
16.1.2 連接資料庫
16.1.3 使用 Statement、ResultSet
16.1.4 使用 PreparedStatement、CallableStatement
16.2 JDBC 進階16.1.2 連接資料庫
16.1.3 使用 Statement、ResultSet
16.1.4 使用 PreparedStatement、CallableStatement
16.2.1 使用 DataSource 取得連線
16.2.2 使用 ResultSet 捲動、更新資料
16.2.3 批次更新
16.2.4 Blob 與 Clob
16.2.5 簡介交易
16.2.6 簡介 metadata
16.2.7 簡介 RowSet
16.3 重點複習16.2.2 使用 ResultSet 捲動、更新資料
16.2.3 批次更新
16.2.4 Blob 與 Clob
16.2.5 簡介交易
16.2.6 簡介 metadata
16.2.7 簡介 RowSet
課後練習
- 反射與類別載入器
17.1 運用反射
課後練習
17.1.1 Class 與.class 檔案
17.1.2 使用 Class.forName()
17.1.3 從 Class 獲得資訊
17.1.4 從 Class 建立物件
17.1.5 操作物件方法與成員
17.1.6 動態代理
17.1.7 當反射遇上模組
17.1.8 使用 ServiceLoader
17.2 瞭解類別載入器17.1.2 使用 Class.forName()
17.1.3 從 Class 獲得資訊
17.1.4 從 Class 建立物件
17.1.5 操作物件方法與成員
17.1.6 動態代理
17.1.7 當反射遇上模組
17.1.8 使用 ServiceLoader
17.2.1 JDK9 類別載入器階層
17.2.2 建立 ClassLoader 實例
17.3 重點複習17.2.2 建立 ClassLoader 實例
課後練習
- 18 自訂泛型、列舉與標註
18.1 自訂泛型
課後練習
18.1.1 使用 extends 與 ?
18.1.2 使用 super 與 ?
18.2 自訂列舉18.1.2 使用 super 與 ?
18.2.1 瞭解 java.lang.Enum 類別
18.2.2 進階 enum 運用
18.3 關於標註18.2.2 進階 enum 運用
18.3.1 常用標準標註
18.3.2 自訂標註型態
18.3.3 執行時期讀取標註資訊
18.4 重點複習18.3.2 自訂標註型態
18.3.3 執行時期讀取標註資訊
課後練習
- 深入模組化
19.1 運用模組
課後練習
19.1.1 模組的種類
19.1.2 requires、exports 與 opens 細節
19.1.3 修補模組
19.1.4 放寬模組封裝與依賴
19.2 模組API19.1.2 requires、exports 與 opens 細節
19.1.3 修補模組
19.1.4 放寬模組封裝與依賴
19.2.1 使用 Module
19.2.2 使用 ModuleDescriptor
19.2.3 淺談 ModuleLayer
19.3 打包模組19.2.2 使用 ModuleDescriptor
19.2.3 淺談 ModuleLayer
19.3.1 使用 jar 打包
19.3.2 使用 jmod 打包
19.3.3 使用 jlink 建立執行時期映像
19.4 重點複習19.3.2 使用 jmod 打包
19.3.3 使用 jlink 建立執行時期映像
課後練習
- A 如何使用本書專案
A.1 專案環境配置
A.2 開啟專案
A.2 開啟專案