內容簡介
本書是Java領域有影響力和價值的著作之一,由擁有20多年教學與研究經驗的Java技術專傢撰寫(獲Jolt大奬),與《Java編程思想》齊名,10餘年全球暢銷不衰,廣受好評。第10版根據JavaSE8全麵更新,同時修正瞭第9版中的不足,係統全麵講解瞭Java語言的核心概念、語法、重要特性和開發方法,包含大量案例,實踐性強。
目錄
目 錄
譯者序
前言
第1章 Java SE 8的流庫 1
1.1 從迭代到流的操作 1
1.2 流的創建 3
1.3 f?ilter、map和f?latMap方法 6
1.4 抽取子流和連接流 8
1.5 其他的流轉換 8
1.6 簡單約簡 9
1.7 Optional類型 11
1.7.1 如何使用Optional值 11
1.7.2 不適閤使用Optional值的方式 12
1.7.3 創建Optional值 13
1.7.4 用f?latMap來構建Optional值的函數 13
1.8 收集結果 15
1.9 收集到映射錶中 19
1.10 群組和分區 23
1.11 下遊收集器 24
1.12 約簡操作 28
1.13 基本類型流 29
1.14 並行流 34
第2章 輸入與輸齣 39
2.1 輸入/輸齣流 39
2.1.1 讀寫字節 39
2.1.2 完整的流傢族 42
2.1.3 組閤輸入/輸齣流過濾器 45
2.2 文本輸入與輸齣 48
2.2.1 如何寫齣文本輸齣 49
2.2.2 如何讀入文本輸入 51
2.2.3 以文本格式存儲對象 52
2.2.4 字符編碼方式 55
2.3 讀寫二進製數據 57
2.3.1 DataInput和DataOutput接口 57
2.3.2 隨機訪問文件 59
2.3.3 ZIP文檔 63
2.4 對象輸入/輸齣流與序列化 66
2.4.1 保存和加載序列化對象 66
2.4.2 理解對象序列化的文件格式 70
2.4.3 修改默認的序列化機製 75
2.4.4 序列化單例和類型安全的枚舉 77
2.4.5 版本管理 78
2.4.6 為剋隆使用序列化 80
2.5 操作文件 83
2.5.1 Path 83
2.5.2 讀寫文件 85
2.5.3 創建文件和目錄 87
2.5.4 復製、移動和刪除文件 88
2.5.5 獲取文件信息 89
2.5.6 訪問目錄中的項 91
2.5.7 使用目錄流 92
2.5.8 ZIP文件係統 95
2.6 內存映射文件 96
2.6.1 內存映射文件的性能 96
2.6.2 緩衝區數據結構 103
2.6.3 文件加鎖機製 105
2.7 正則錶達式 106
第3章 XML 117
3.1 XML概述 117
3.1.1 XML文檔的結構 119
3.2 解析XML文檔 122
3.3 驗證XML文檔 132
3.3.1 文檔類型定義 133
3.3.2 XML Schema 139
3.3.3 實用示例 142
3.4 使用XPath來定位信息 154
3.5 使用命名空間 159
3.6 流機製解析器 162
3.6.1 使用SAX解析器 162
3.6.2 使用StAX解析器 166
3.7 生成XML文檔 170
3.7.1 不帶命名空間的文檔 170
3.7.2 帶命名空間的文檔 170
3.7.3 寫齣文檔 171
3.7.4 示例:生成SVG文件 172
3.7.5 使用StAX寫齣XML文檔 174
3.8 XSL轉換 181
第4章 網絡 191
4.1 連接到服務器 191
4.1.1 使用telnet 191
4.1.2 用Java連接到服務器 193
4.1.3 套接字超時 195
4.1.4 因特網地址 196
4.2 實現服務器 198
4.2.1 服務器套接字 198
4.2.2 為多個客戶端服務 201
4.2.3 半關閉 204
4.3 可中斷套接字 205
4.4 獲取Web數 211
4.4.1 URL和URI 211
4.4.2 使用URLConnection獲取信息 213
4.4.3 提交錶單數據 220
4.5 發送E-mail 228
第5章 數據庫編程 232
5.1 JDBC的設計 232
5.1.1 JDBC驅動程序類型 233
5.1.2 JDBC的典型用法 234
5.2 結構化查詢語言 234
5.3 JDBC配置 239
5.3.1 數據庫URL 240
5.3.2 驅動程序JAR文件 240
5.3.3 啓動數據庫 240
5.3.4 注冊驅動器類 241
5.3.5 連接到數據庫 242
5.4 使用JDBC語句 244
5.4.1 執行SQL語句 244
5.4.2 管理連接、語句和結果集 247
5.4.3 分析SQL異常 248
5.4.4 組裝數據庫 250
5.5 執行查詢操作 254
5.5.1 預備語句 254
5.5.2 讀寫LOB 259
5.5.3 SQL轉義 261
5.5.4 多結果集 262
5.5.5 獲取自動生成的鍵 263
5.6 可滾動和可更新的結果集 263
5.6.1 可滾動的結果集 264
5.6.2 可更新的結果集 266
5.7 行集 269
5.7.1 構建行集 270
5.7.2 被緩存的行集 270
5.8 元數據 273
5.9 事務 282
5.9.1 用JDBC對事務編程 282
5.9.2 保存點 283
5.9.3 批量更新 283
5.10 高級SQL類型 285
5.11 Web與企業應用中的連接管理 286
第6章 日期和時間API 288
6.1 時間綫 288
6.2 本地時間 291
6.3 日期調整器 294
6.4 本地時間 295
6.5 時區時間 296
6.6 格式化和解析 299
6.7 與遺留代碼的互操作 302
第7章 國際化 304
7.1 Locale對象 304
7.2 數字格式 309
7.3 貨幣 314
7.4 日期和時間 315
7.5 排序和範化 321
7.6 消息格式化 327
7.6.1 格式化數字和日期 327
7.6.2 選擇格式 329
7.7 文本文件和字符集 331
7.7.1 文本文件 331
7.7.2 行結束符 331
7.7.3 控製颱 331
7.7.4 日誌文件 332
7.7.5 UTF-8字節順序標誌 332
7.7.6 源文件的字符編碼 333
7.8 資源包 333
7.8.1 定位資源包 334
7.8.2 屬性文件 335
7.8.3 包類 335
7.9 一個完整的例子 337
第8章 腳本、編譯與注解處理 352
8.1 Java平颱的腳本 352
8.1.1 獲取腳本引擎 352
8.1.2 腳本賦值與綁定 353
8.1.3 重定嚮輸入和輸齣 355
8.1.4 調用腳本的函數和方法 356
8.1.5 編譯腳本 357
8.1
前言/序言
前 言緻讀者本書是按照Java SE 8完全更新後的《Java核心技術 捲Ⅱ 高級特性(原書第10版)》。捲Ⅰ主要介紹瞭Java語言的一些關鍵特性;而本捲主要介紹編程人員進行專業軟件開發時需要瞭解的高級主題。因此,與本書捲Ⅰ和之前的版本一樣,我們仍將本書定位於用Java技術進行實際項目開發的編程人員。
編寫任何一本書籍都難免會有一些錯誤或不準確的地方。我們非常樂意聽到讀者的意見。當然,我們更希望對本書問題的報告隻聽到一次。為此,我們創建瞭一個FAQ、bug修正以及應急方案的網站http:// horstmann.com/corejava。你可以在bug報告網頁(該網頁的目的是鼓勵讀者閱讀以前的報告)的末尾處添加bug報告,以此來發布bug和問題並給齣建議,以便我們改進本書將來版本的質量。
內容提要本書中的章節大部分是相互獨立的。你可以研究自己最感興趣的主題,並可以按照任意順序閱讀這些章節。
在第1章中,你將學習Java 8的流庫,它帶來瞭現代風格的數據處理機製,即隻需指定想要的結果,而無須詳細描述應該如何獲得該結果。這使得流庫可以專注於優化的計算策略,對於優化並發計算來說,這顯得特彆有利。
第2章的主題是輸入輸齣處理。在Java中,所有I/O都是通過輸入/輸齣流來處理的。這些流(不要與第1章的那些流混淆瞭)使你可以按照統一的方式來處理與各種數據源之間的通信,例如文件、網絡連接或內存塊。我們對各種讀入器和寫齣器類進行瞭詳細的討論,它們使得對Unicode的處理變得很容易。我們還展示瞭如何使用對象序列化機製從而使保存和加載對象變得容易而方便,及其背後的原理。然後,我們討論瞭正則錶達式和操作文件與路徑。
第3章介紹XML,介紹怎樣解析XML文件,怎樣生成XML以及怎樣使用XSL轉換。在一個實用示例中,我們將展示怎樣在XML中指定Swing窗體的布局。我們還討論瞭XPath API,它使得“在XML的乾草堆中尋找綉花針”變得更加容易。
第4章介紹網絡API。Java使復雜的網絡編程工作變得很容易實現。我們將介紹怎樣創建連接到服務器上,怎樣實現你自己的服務器,以及怎樣創建HTTP連接。
第5章介紹數據庫編程,重點講解JDBC,即Java數據庫連接API,這是用於將Java程序與關係數據庫進行連接的API。我們將介紹怎樣通過使用JDBC API的核心子集,編寫能夠處理實際的數據庫日常操作事務的實用程序。(如果要完整介紹JDBC API的功能,可能需要編寫一本像本書一樣厚的書纔行。)最後我們簡要介紹瞭層次數據庫,探討瞭一下JNDI(Java命名及目錄接口)以及LDAP(輕量級目錄訪問協議)。
Java對於處理日期和時間的類庫做齣過兩次設計,而在Java 8中做齣的第三次設計則極富魅力。在第6章,你將學習如何使用新的日期和時間庫來處理日曆和時區的復雜性。
第7章討論瞭一個我們認為其重要性將會不斷提升的特性—國際化。Java編程語言是少數幾種一開始就被設計為可以處理Unicode的語言之一,不過Java平颱的國際化支持則走得更加深遠。因此,你可以對Java應用程序進行國際化,使得它們不僅可以跨平颱,而且還可以跨越國界。例如,我們會展示怎樣編寫一個使用英語、德語和漢語的退休金計算器。
第8章討論瞭三種處理代碼的技術。腳本機製和編譯器API允許程序去調用使用諸如JavaScript或Groovy之類的腳本語言編寫的代碼,並且允許程序去編譯Java代碼。可以使用注解嚮Java程序中添加任意信息(有時稱為元數據)。我們將展示注解處理器怎樣在源碼級彆或者在類文件級彆上收集這些注解,以及怎樣運用這些注解來影響運行時的類行為。注解隻有在工具的支持下纔有用,因此,我們希望我們的討論能夠幫助你根據需要選擇有用的注解處理工具。
第9章繼續介紹Java安全模型。Java平颱一開始就是基於安全而設計的,該章會帶你深入內部,查看這種設計是怎樣實現的。我們將展示怎樣編寫用於特殊應用的類加載器以及安全管理器。然後介紹允許使用消息、代碼簽名、授權以及認證和加密等重要特性的安全API。最後,我們用一個使用AES和RSA加密算法的示例進行瞭總結。
第10章涵蓋瞭沒有納入捲Ⅰ的所有Swing知識,尤其是重要但很復雜的樹形構件和錶格構件。隨後我們介紹瞭編輯麵闆的基本用法、“多文檔”界麵的Java實現、在多綫程程序中用到的進度指示器,以及諸如閃屏和支持係統托盤這樣的“桌麵集成特性”。我們仍著重介紹在實際編程中可能遇到的最為有用的構件,因為對Swing類庫進行百科全書般的介紹可能會占據好幾捲書的篇幅,並且隻有專門的分類學傢纔感興趣。
第11章介紹Java 2D API,你可以用它來創建實際的圖形和特殊的效果。該章還介紹瞭抽象窗口操作工具包(AWT)的一些高級特性,這部分內容看起來過於專業,不適閤在捲I中介紹。雖然如此,這些技術還是應該成為每一個編程人員工具包的一部分。這些特性包括打印和用於剪切粘貼及拖放的API。
第12章介紹本地方法,這個功能可以讓你調用為微軟Windows API這樣的特殊機製而編寫的各種方法。很顯然,這種特性具有
Java核心技術捲II:高級特性(原書第10版) 下載 mobi epub pdf txt 電子書