瘋狂Java講義(第6版)(下冊)

李剛

  • 出版商: 電子工業
  • 出版日期: 2023-02-01
  • 定價: $714
  • 售價: 8.5$607
  • 語言: 簡體中文
  • 頁數: 472
  • ISBN: 7121449242
  • ISBN-13: 9787121449246
  • 相關分類: Java 程式語言
  • 立即出貨

買這商品的人也買了...

商品描述

本書是《瘋狂Java講義》的第6版的下冊,第6版保持了前5版系統、全面、講解淺顯、細致的特性,全面新增介紹了Java 12到Java 17的新特性。《瘋狂Java講義(第6版)深入介紹了Java編程的相關方面,上、下冊內容覆蓋了Java的基本語法結構、Java的面向對象特徵、Java集合框架體系、Java泛型、異常處理、Java GUI編程、JDBC數據庫編程、Java註釋、Java的IO流體系、Java多線程編程、Java網絡通信編程和Java反射機制,覆蓋了java.lang、java.util、java.text、java.io和java.nio、java.sql、java.awt、javax.swing包下絕大部分的類和接口。第6版重點介紹了Java的模塊化系統,還詳細介紹了Java 12到Java 17引入的塊字符串,instanceof的模式匹配,增強型switch語句、switch表達式及模式匹配,密封類,Record類,以及Java 12到Java 17新增的各種API功能。與前5版類似,第6版並不單純地從知識角度來講解Java,而是從解決問題的角度來介紹Java語言,所以涉及大量實用案例開發:五子棋游戲、梭哈游戲、仿QQ的游戲大廳、MySQL企業管理器、仿EditPlus的文本編輯器、多線程、斷點下載工具、Spring框架的IoC容器……這些案例既能讓讀者鞏固每章所學的知識,又可以讓讀者學以致用,激發編程自豪感,進而引爆內心的編程激情。第6版相關資料包中包含書中所有示例的代碼和《瘋狂Java實戰演義》的所有項目代碼,這些項目可以作為本書課後練習題的“非標準答案”。如果讀者需要獲取關於課後練習題的解決方法、編程思路,可關註“瘋狂講義”微信服務號,加入讀者微信群後,與作者及本書龐大的讀者群相互交流。

目錄大綱

第12章 Swing編程
12.1 Swing概述
12.2 Swing基本組件的用法
12.2.1 Swing組件層次
12.2.2 AWT組件的Swing實現
為什麽單擊Swing多行文本域時不是彈出像AWT多行文本域中那樣的右鍵菜單?
12.2.3 為組件設置邊框
12.2.4 Swing組件的雙緩沖和鍵盤驅動
12.2.5 使用JToolBar創建工具條
12.2.6 使用JColorChooser和JFileChooser
12.2.7 使用JOptionPane
12.3 Swing中的特殊容器
12.3.1 使用JSplitPane
12.3.2 使用JTabbedPane
12.3.3 使用JLayeredPane、JDesktopPane和JInternalFrame
12.4 Swing簡化的拖放功能
12.5 Java 7新增的Swing功能
12.5.1 使用JLayer裝飾組件
12.5.2 創建透明的、不規則形狀窗口
12.6 使用JProgressBar、ProgressMonitor和BoundedRangeModel創建進度條
12.6.1 創建進度條
12.6.2 使用ProgressMonitor創建進度對話框
12.7 使用JSlider和BoundedRangeModel創建滑動條
12.8 使用JSpinner和SpinnerModel創建微調控制器
12.9 使用JList、JComboBox創建列表框
12.9.1 簡單列表框
12.9.2 不強制存儲列表項的ListModel和ComboBoxModel
12.9.3 強制存儲列表項的DefaultListModel和 DefaultComboBoxModel
為什麽JComboBox提供了添加、刪除列表項的方法,而JList沒有提供添加、刪除列表項的方法呢?
12.9.4 使用ListCellRenderer改變列表項外觀
12.10 使用JTree和TreeModel創建樹
12.10.1 創建樹
12.10.2 拖動、編輯樹節點
12.10.3 監聽節點事件
12.10.4 使用DefaultTreeCellRenderer改變節點外觀
12.10.5 擴展DefaultTreeCellRenderer改變節點外觀
12.10.6 實現TreeCellRenderer改變節點外觀
12.11 使用JTable和TableModel創建表格
12.11.1 創建表格
我們指定的表格數據、表格列標題都是Object類型的數組,JTable如何顯示這些Object對象?
12.11.2 TableModel和監聽器
12.11.3 TableColumnModel和監聽器
12.11.4 實現排序
12.11.5 繪制單元格內容
12.11.6 編輯單元格內容
12.12 使用JFormattedTextField和JTextPane創建格式文本
12.12.1 監聽Document的變化
12.12.2 使用JPasswordField
12.12.3 使用JFormattedTextField
12.12.4 使用JEditorPane
12.12.5 使用JTextPane
12.13 本章小結
本章練習
第13章 MySQL數據庫與JDBC編程
13.1 JDBC基礎
13.1.1 JDBC簡介
13.1.2 JDBC驅動程序
13.2 SQL語法
13.2.1 安裝數據庫
13.2.2 關系數據庫的基本概念和MySQL基本命令
13.2.3 SQL語句基礎
13.2.4 DDL語句
13.2.5 數據庫約束
13.2.6 索引
13.2.7 視圖
13.2.8 DML語句
13.2.9 單表查詢
13.2.10 數據庫函數
13.2.11 分組和組函數
13.2.12 多表連接查詢
13.2.13 子查詢
13.2.14 集合運算
13.3 JDBC的典型用法
13.3.1 JDBC 4.2常用接口和類簡介
13.3.2 JDBC編程步驟
前面給出的僅僅是MySQL和Oracle兩種數據庫的驅動,我看不出驅動類字符串有什麽規律啊!如果我希望使用其他數據庫,那怎麽找到其他數據庫的驅動類呢?
13.4 執行SQL語句的方式
13.4.1 使用executeLargeUpdate方法執行DDL語句和DML語句
13.4.2 使用execute方法執行SQL語句
13.4.3 使用PreparedStatement執行SQL語句
13.4.4 使用CallableStatement調用存儲過程
13.5 管理結果集
13.5.1 可滾動、可更新的結果集
13.5.2 處理Blob類型數據
13.5.3 使用ResultSetMetaData分析結果集
13.6 使用RowSet 1.1包裝結果集
13.6.1 RowSetFactory與RowSet
13.6.2 離線RowSet
13.6.3 離線RowSet的查詢分頁
13.7 事務處理
13.7.1 事務的概念和MySQL事務支持
13.7.2 JDBC的事務支持
13.7.3 使用批量更新
13.8 分析數據庫信息
13.8.1 使用DatabaseMetaData分析數據庫信息
13.8.2 使用系統表分析數據庫信息
13.8.3 選擇合適的分析方式
13.9 使用連接池管理連接
13.9.1 DBCP2數據源
13.9.2 C3P0數據源
13.10 本章小結
本章練習
第14章 註解
14.1 基本註解
14.1.1 限定重寫父類的方法:@Override
14.1.2 Java 9增強的@Deprecated
14.1.3 抑制編譯器警告:@SuppressWarnings
14.1.4 “堆污染”警告與Java 9增強的@SafeVarargs
14.1.5 函數式接口與@FunctionalInterface
14.2 JDK的元註解
14.2.1 使用@Retention
14.2.2 使用@Target
14.2.3 使用@Documented
14.2.4 使用@Inherited
14.3 自定義註解
14.3.1 定義註解
14.3.2 提取註解信息
14.3.3 註解使用示例
14.3.4 重復註解
14.3.5 類型註解
14.4 編譯時處理註解
14.5 本章小結
第15章 輸入/輸出
15.1 File類
15.1.1 訪問文件和目錄
15.1.2 文件過濾器
15.2 理解Java的IO流
15.2.1 流的分類
15.2.2 流的概念模型
15.3 字節流和字符流
15.3.1 InputStream和Reader
15.3.2 OutputStream和Writer
15.4 輸入/輸出流體系
15.4.1 處理流的用法
15.4.2 輸入/輸出流的類體系
15.4.3 轉換流
怎麽沒有把字符流轉換成字節流的轉換流呢?
15.4.4 推回輸入流
15.5 重定向標準輸入/輸出
15.6 Java虛擬機讀/寫其他進程的數據
15.7 RandomAccessFile
15.8 對象序列化
15.8.1 序列化的含義和意義
15.8.2 使用對象流實現序列化
15.8.3 對象引用的序列化
15.8.4 對序列化數據執行過濾
15.8.5 自定義序列化
15.8.6 另一種自定義序列化機制
15.8.7 版本
15.9 NIO
15.9.1 Java NIO概述
15.9.2 使用Buffer
15.9.3 使用Channel
15.9.4 字符集和Charset
二進制序列與字符之間如何對應呢?
15.9.5 文件鎖
15.10 NIO.2的功能和用法
15.10.1 Path、Paths和Files核心API
15.10.2 使用FileVisitor遍歷文件和目錄
15.10.3 使用WatchService監聽文件的變化
15.10.4 訪問文件屬性
15.11 本章小結
本章練習
第16章 多線程
16.1 線程概述
16.1.1 線程和進程
16.1.2 多線程的優勢
16.2 線程的創建和啟動
16.2.1 通過繼承Thread類創建線程類
16.2.2 通過實現Runnable接口創建線程類
16.2.3 使用Callable和Future創建線程
16.2.4 創建線程的三種方式對比
16.3 線程的生命周期
16.3.1 新建和就緒狀態
16.3.2 運行和阻塞狀態
16.3.3 線程死亡
16.4 控制線程
16.4.1 join線程
16.4.2 後台線程
16.4.3 線程睡眠
16.4.4 改變線程優先級
16.5 線程同步
16.5.1 線程安全問題
16.5.2 同步代碼塊
16.5.3 同步方法
16.5.4 釋放對同步監視器的鎖定
16.5.5 同步鎖
16.5.6 死鎖及常用處理策略
16.6 線程通信
16.6.1 傳統的線程通信
16.6.2 使用Condition控制線程通信
16.6.3 使用BlockingQueue(阻塞隊列)控制線程通信
16.7 線程組和未處理異常
16.8 線程池
16.8.1 使用線程池管理線程
16.8.2 使用ForkJoinPool利用多CPU
16.9 線程相關類
16.9.1 ThreadLocal類
16.9.2 包裝線程不安全的集合
16.9.3 線程安全的集合類
16.9.4 使用Flow類實現發布-訂閱
16.10 CompletableFuture的功能和用法
16.10.1 獲取單任務的結果或異常
16.10.2 單任務消費
16.10.3 雙任務組合
16.10.4 多任務組合
16.11 本章小結
本章練習
第17章 網絡編程
17.1 網絡編程的基礎知識
17.1.1 網絡基礎知識
17.1.2 IP地址和埠
17.2 Java的基本網絡支持
17.2.1 使用InetAddress
17.2.2 使用URLDecoder和URLEncoder
17.2.3 URL、URLConnection和URLPermission
17.3 基於TCP協議的網絡編程
17.3.1 TCP協議基礎
17.3.2 使用ServerSocket創建TCP服務器端
17.3.3 使用Socket進行通信
17.3.4 加入多線程
17.3.5 記錄用戶信息
17.3.6 半關閉的Socket
17.3.7 使用NIO實現非阻塞式Socket通信
17.3.8 使用AIO實現非阻塞式通信
上面程序中好像沒用到④⑤號代碼的get()方法的返回值,在這兩個地方不調用get()方法行嗎?
17.3.9 Java 17新增的Unix domain socket
17.4 基於UDP協議的網絡編程
17.4.1 UDP協議基礎
17.4.2 使用DatagramSocket發送和接收數據
17.4.3 使用JDK 17的DatagramSocket實現多點廣播
17.5 使用代理服務器
17.5.1 直接使用Proxy創建連接
17.5.2 使用ProxySelector自動選擇代理服務器
17.6 使用HTTP Client進行網絡通信
17.6.1 發送同步GET請求
17.6.2 發送帶請求體的請求
17.6.3 發送異步請求
17.6.4 WebSocket客戶端支持
17.6.5 基於WebSocket的多人實時聊天
17.7 本章小結
本章練習
第18章 類加載機制與反射
18.1 類的加載、連接和初始化
18.1.1 JVM和類
18.1.2 類的加載
18.1.3 類的連接
18.1.4 類的初始化
18.1.5 類初始化的時機
18.2 類加載器
18.2.1 類加載機制
18.2.2 創建並使用自定義的類加載器
18.2.3 URLClassLoader類
18.3 通過反射查看類信息
18.3.1 獲得Class對象
18.3.2 從Class中獲取信息
18.3.3 方法參數反射
18.4 使用反射生成並操作對象
18.4.1 創建對象
18.4.2 調用方法
18.4.3 訪問成員變量的值
18.4.4 操作數組
18.4.5 嵌套訪問權限
18.5 使用反射生成JDK動態代理
18.5.1 使用Proxy和InvocationHandler 創建動態代理
18.5.2 動態代理和AOP
18.5.3 Java 17新增的invokeDefault方法
18.6 反射和泛型
18.6.1 泛型和Class類
18.6.2 使用反射來獲取泛型信息
18.7 本章小結
本章練習
附錄A Java模塊化系統