第1堂 Java 應用程式簡介
(I)Lesson 01: Introduction 基本程式語言概念的知識 Java 程式語言的知識 Java 程式和物件導向 (OO) 概念
(I)Lesson 02: What is a Java Program ? 何謂“平台相關”和“平台無關” JVM 的用途 程序式程式和物件導向程式之間的區別 javac 和 java的用途 驗證系統上Java 版本 從命令行(命令提示字元視窗)編譯並運行 Java 程式
(I)Lesson 03: Creating a Java Main Class 使用IDE 工具創建和測試 Java 類別 編寫一個主要方法 使用 System.out.println 將字串文字寫入系統並輸出
第2堂 Java資料與陣列
(I)Lesson 04: Data in a Cart • 描述 Java 語言中變數的用途 • 列出並描述四種數據類型 • 宣告和初始化字串(String)變數 • 使用“+”運算符連接字串(String)變數 • 進行變數指派 • 宣告並初始化 int 和 double變數 • 使用數字運算符修改變數值 • 使用 ( ) 覆寫預設運算符優先級
(I)Lesson 05: Managing Multiple Items 解釋什麼是boolean表達式 創建一個簡單的 if/else 語句 描述陣列的用途 宣告並初始化一個 String 或 int 陣列 訪問陣列的元素 解釋 for 循環的目的 使用 for 循環遍歷 String 陣列
第3堂: Java類別與物件
(I)Lesson 06: Describing Objects and Classes 列出物件的特徵 將物件定義為類別的實例 實例化一個物件並訪問它的屬性和方法 描述物件如何存儲在記憶體(內存)中 實例化物件陣列 描述物件陣列如何存儲在記憶體(內存)中 將物件宣告並實例化為屬性
(I)Lesson 07: Manipulating and Formatting the Data in Your Program 描述String 類別並使用String 類別的一些方法 使用 JDK API 文件檔來搜索和學習如何使用類別 描述 StringBuilder 類別 解釋什麼是常數以及如何使用它 解釋變數的晉升和轉型之間的區別
第4堂: 建立與使用方法
(I)Lesson 08: Creating and Using Method 針對方法添加參數 物件化(實例化)一個類別並調用一個方法 重載方法 使用靜態方法和變數 使用整數 Integer、雙精度 Double 和布林 Boolean 物件類型轉換數據值
第5堂:使用封裝
(I)Lesson 09: Using Encapsulation • 使用 public 和 private 存取修飾符 • 使用封裝限制對字串和方法的存取訪問 • 在類別中實現封裝 • 通過向建構子(構造函數)添加方法參數來重載建構子(構造函數)
第6堂:更多的條件控制
(I)Lesson 10: More on Conditionals • 使用 ? : 三元語句 • 測試字符之間的 equals相等性 • 使用if/else 語句 • 使用 switch 語句
第7堂: 再探 Java 陣列、迴圈與日期型態
(I)Lesson 11 Working with Arrays, Loops and Dates 創建一個 java.time.LocalDateTime 對象來顯示當前日期和時間 解析 main 方法的 args 數組 嵌套一個 while 循環 開發和嵌套 for 循環 編碼並嵌套 do/while 循環 使用 ArrayList 來存儲和操作對象
第8堂: Java 繼承
(I)Lesson 12 Using Inheritance 在 Java定義繼承 創建子類別 覆蓋父(超)類中的方法 使用 super 關鍵字來引用父(超)類 定義多型(態) 使用 instanceof 運算符來測試對象的類型 將父(超)類引用轉換為子類別類型 解釋抽像類別和非抽像類別之間的區別 通過繼承抽像類別創建類層次結構
第9堂: 使用介面
(I)Lesson 13: Using Interfaces 覆寫 Object 類的 toString 方法 在類別中實現介面(接口) 轉換為介面(接口)引用以允許訪問物件方法 使用區域變數類型推斷功能來宣告var 區域變數 編寫一個使用 Predicate 的簡單 lambda 表達式
第10堂:錯誤處理
(I)Lesson 14: Handling Exceptions 描述 Java 如何處理程序中的意外事件 三種類型的 Throwable 類別 了解基礎類別拋出的異常 描述當異常被拋出但未被捕獲時,若仍繼續調用堆疊中會發生什麼 編寫程式碼來處理基礎類別方法拋出的異常
第11堂:Java 程式部署與維護
(I)Lesson 15: Deploying and Maintaining the Soccer Application • 將簡單應用程序部署為 JAR 文件 • 描述 Java 應用程序的各個部分,包括用戶界面和後端 • 描述如何利用擴展技術以在應用程序中實現新功能
第12堂:了解模塊化設計
(I)Lesson 16: Understanding Modules 了解 Java 模塊化設計原則 定義模塊依賴項 向其他模塊公開模塊內容
第13堂:Java 物件導向 OOP 概覽
(II)Lesson 1、2:Java OOP Review •創建 Java 類別 •在 Java 類設計中使用封裝 •建構抽象 Java 類別和子類別 •覆蓋方法 •使用可變參數指定可變參數 •在 Java 中應用 final 關鍵字•區分頂層類別和內部類別 •使用列舉
第14堂: 異常處理與斷言
(II)Lesson 3:Exception Handling and Assertions
• 定義 Java 異常的目的
• 使用 try 和 throw 語句
• 使用 catch、multi-catch 和 finally 子句
• 使用 try-with-resources 語句自動關閉資源
• 識別常見的異常類別和類別
• 創建自定義例外和可自動關閉的資源
• 使用斷言測試不變量
第15堂: Java 介面(接口)
(II)Lesson 4:Java Interfaces • 在介面中使用預設方法 • 確定何時需要在介面中實現預設方法 • 確定繼承規則如何應用於介面中實現的方法 • 在介面中使用私有方法 • 確定何時需要在介面中實現私有方法 • 定義匿名類別
第16堂: 集合和泛型
(II)Lesson 5: Collections and Generics
• 描述自動裝箱(auto-boxing)和自動拆箱(auto-unboxing)功能
• 創建泛型方法和類別
• 描述 Java 集合框架
• 創建不同的集合實現
• 排序集合
• 解釋泛型中的通配符
• 描述集合的便捷方法(Java SE 9)
第17堂: 函數式接口和 Lambda 表達式
(II)Lesson 6:Functional Interfaces and Lambda Expressions
• 解釋函數式程式設計(編程)概念
• 定義功能介面
• 定義謂詞(Predicate)
• 描述如何將函數作為參數傳遞
• 定義一個 lambda 表達式
• 定義語句 lambda
• 描述 lambda 參數
• 描述 lambda 參數的區域變數語法
第18堂: 集合、串流與過濾
(II)Lesson 7:Collections, Streams, and Filters
• 描述 Builder 模式
• 使用 lambda 語法遍歷(Iterate)集合
• 描述 Stream 介面
• 使用 lambda 表達式過濾集合
• 使用方法引用調用現有方法
• 鏈接(Chain)多種方法
• 根據 lambda 表達式和集合定義管道(pipelines)
第19堂: Lambda
(II)Lesson 8:Lambda Built-in Functional Interfaces
• 列出包含在 java.util.function 中的主要內置介面
• 使用基本介面的原始版本
• 使用 Binary 的基本介面
(II)Lesson 9:Lambda Operations
• 使用 map 從物件中提取數據
• 描述流操作的類型
• 描述 Optional 類別
• 描述惰性(lazy)處理
• 對串流進行排序
• 使用 collect 方法將結果保存到集合
• 使用收集器類對數據進行分組和分區
第20堂: 模組(模塊)系統
(II)Lesson 10:The Module System
• 描述模組信息類的用途(一般而言)
• 創建具有定義的模組依賴項和模塊封裝的模組
• 在命令行上編譯模組並創建模組化 JAR 文件
• 描述 IDE 開發工具如何為原始碼、編譯模組和模組化 JAR 組織其文件夾
(II)Lesson 11:Migrating to a Modular Application
• 使用 jdeps 檢查 Java SE 8 應用程序中各個 JAR 的依賴關係
• 描述自上而下和自下而上遷移之間的區別
• 使用類路徑和模塊路徑運行 Java SE 9 應用程序
• 描述拆分包及其發生方式
• 描述循環依賴和解決它們的方法
(II)Lesson 12:Services in a Modular Application
• Java SE 9 中如何支持服務
• 提供具體對象的服務與提供代理對象的服務之間的區別
• 服務如何幫助解決循環依賴問題
第21堂: 並發 Concurrency
(II)Lesson 13:Concurrency
• 描述操作系統任務調度
• 使用 Runnable 和 Callable 創建工作執行緒(線程)
• 使用 ExecutorService 並發執行任務
• 識別潛在的執行緒問題
• 使用 synchronized 和 java.concurrent.atomic 套件中的類別來管理原子性
• 使用監視器鎖來控制執行緒執行的順序
• 使用 java.util.concurrent 集合
第22堂: 並行流 Parallel Streams
(II)Lesson 14:Parallel Streams
• 查看 Stream 的主要特徵
• 將舊式循環操作與 Stream 進行對比
• 描述如何使流管道(stream pipeline)並行執行
• 列出使用並行管道所需的關鍵資源
• 定義歸納(Reduction)
• 描述為什麼歸納需要關聯函數
• 使用 reduce 計算值
• 描述分解然後合併工作的過程
• 列出並行流的關鍵性能與注意事項
第23堂: 終端操作:收集器
(II)Lesson 15:Terminal Operations: Collectors
• 創建集合
• 將元素分組到一個集合中
• 對集合執行匯總
• 創建自定義收集器
• 通過組合收集器創建自定義收集器
第24堂: 建構客製化串流
(II)Lesson 16:Creating Custom Streams
• 基於自定義數據類型創建自定義流
• 創建自定義 Spliterator
第25堂: Java I/O(NIO.2) 與安全程式碼
(II)Lesson 17:Java I/O Fundamentals and File I/O (NIO.2)
• 描述 Java 中輸入和輸出的基礎知識
• 從控制台讀取數據和向控制台(console)寫入數據
• 使用 I/O 流讀取和寫入文件
• 使用序列化讀取和寫入物件
• 使用 Path 介面對文件和目錄路徑進行操作
• 使用 Files 類檢查、刪除、複製或移動文件或目錄
• 將 Stream API 與 NIO2 結合使用
(II)Lesson 18:Secure Coding Guidelines
• 描述 Java SE 安全概述
• 解釋漏洞
• 描述安全編碼指南和反模式
第26堂: 資料庫與本地化
(II)Lesson 19:Building Database Applications with JDBC
• 定義 JDBC API 的佈局
• 使用 JDBC 驅動程序連接到資料庫
• 提交查詢並從數據庫中獲取結果
• 在外部指定 JDBC 驅動程序信息
• 使用 JDBC API 執行 CRUD 操作
(II)Lesson 20:Localization
• 描述本地化應用程序的優勢
• 定義語言環境代表什麼
• 使用 Locale 對象讀取和設置區域設置
• 創建和讀取屬性文件
• 為每個語言環境構建一個資源包
• 從應用程序調用資源包
• 更改資源包的語言環境