本書以面向對象的設計思想為主線,首先從Java語言的特性介紹入手,詳細講解Java的基礎語法知識;然后循序漸進地解釋面向對象三大特征和接口等重要知識點,并剖析其應用及程序設計方法;最后進一步深入講解Java在輸入/輸出、Java集合框架、JDBC連接數據庫、圖形用戶界面、多線程等方面的編程方法。此外,本書內容還涉及一些Java高級主題,包括高級并發、Socket網絡編程、Java NIO以及Android圖形用戶界面開發等基本理論及實用開發技術。本書全面整合了JDK 5~JDK 8的主要特性,力求與當今Java技術的工程應用保持同步。在例題與習題的選用與設計上深入淺出,強調連貫性與實用性,以期通過實踐鍛煉讀者的面向對象程序設計能力。
第2版說明本書第1版于2012年9月出版,第2版在第1版的基礎上,結合當今Java發展的最新技術,廣泛聽取了讀者和同行的建議,并根據作者在授課和開發過程中的實踐經驗重新整編。
本書在保持第1版Java基礎知識體系的同時,進一步從實踐的角度闡述Java面向對象的編程思想及編程技巧,與當前業內Java技術的最新發展相結合,細化、深化某些技術要點,強調Java應用程序的設計思想及技巧,體現Java的知識性、系統性及先進性。主要更新知識點如下:
1.緊密結合Java的最新發展,在JDK 5、JDK 6、JDK 7的基礎上,繼續增添JDK 8的語法新特性。
2.刪除第1版的Java applet部分,因為該技術如今已經很少使用。
3.增加Java網絡應用知識,增添Java Socket網絡編程和Java非阻塞IO(NIO),并以實例展示Socket 、NIO結合多線程在網絡及分布式系統中的綜合應用。
4.深化多線程編程,同時進一步細化并深入分析多線程高級并發部分,補充了線程池、阻塞隊列等內容。
5.增加Android圖形用戶界面開發簡介。結合當今Java在GUI方面的應用重點已經轉移到Android 平臺的特點,介紹Android系統架構及組件,并以實例的形式講解Android GUI基礎控件的開發。
6.其他增添及更新的細節包括:Java基礎部分的注釋(Annotation)、反射機制,Java集合框架的Collections類、比較器、泛型,JDBC連接數據庫的調用存儲過程,等等。
本書背景作為當今最流行而且不斷發展的面向對象程序設計語言,Java語言隨著網絡的發展而被廣泛普及、應用,Java語言已經和我們的日常生活息息相關。信息化的發展帶動了Java在金融、通信、制造、電子政務、移動設備及消費類電子產品等領域日益廣泛的應用,尤其是近年來Android移動平臺的推廣,又為Java語言注入了新的活力,使之成為IT行業一顆璀璨的明星。
近年來,市場對Java開發人才的需求旺盛,激發了廣大開發人員學習Java語言的興趣。但是,對于很多Java初學者來說,如何選擇適合自己的教材,從而快速提高Java編程水平,是很重要的事情。
本書作者具有豐富的教學經驗及工業界軟件開發經歷,書的設計力求切合實際,盡量為縮小計算機專業畢業生與工業界人才需求之間的差距做出一些努力,同時引導讀者深入理解Java程序設計,少走彎路。本書從始至終貫穿著面向對象的編程思想,以Java語言為實現方式,強調Java語言的精華在于“面向對象思想”。本書覆蓋的內容全面,從Java語言的基礎知識一直到Java類庫的應用、數據庫程序設計及Android平臺程序開發。使讀者能夠從通俗易懂的語言中理解程序設計理念,幫助讀者認識到任何一種面向對象程序設計語言的語法和風格可能有所不同,但是其編程思想都是一致的,編程語言的學習不應該局限于表面的語法格式,而是應該深入了解程序設計語言的本質規律,掌握其精髓思想,才能真正學會并運用一門程序語言。
本書特色本書的主要特色為通俗易懂、實踐性強、例題豐富,展現了Java最新技術。
本書著重探究應用設計技巧及解決方案,始終以面向對象設計理念為主線,解析面向對象程序設計思想及方法,強調語法知識的學習應以理解編程思想為前提。
本書強調Java語言的實踐性,提供大量實用性很強的編程實例,實例生動、完整、連貫性強,并配有與開發相關的重要技術要點提示。采用業內流行的eclipse集成開發環境作為開發平臺,配合UML(統一建模語言)表述程序分析及設計。另外還提供了一個覆蓋所有重要知識點的綜合性開發實例(電子產品商店管理系統),該實例隨著面向對象程序設計理論的深入、Java語法知識點的展開,由淺入深,并逐步完善和擴展規模,最后形成一個具有圖形用戶界面、實現數據庫訪問操作的、規模適中的應用管理系統,幫助學生理解Java編程的設計與實現。
本書強調Java語言的更替性及應用性,緊密結合Java語言不斷發展的特色,覆蓋內容全面,理論闡述簡潔淺顯,具有較強的可讀性。本書也力求反映Java技術的新成果、新趨勢,將JDK 5、JDK 6、JDK 7及JDK 8的最新技術和思想方法介紹給讀者。本書還簡要介紹了目前Java語言應用最為廣泛的Android移動平臺以及基本的Android圖形用戶界面編程方法。
本書習題側重于培養學生自主學習、自行探索、獨立解決問題以及團隊協作的能力。學生不僅可以練習編程,而且還能自行設計程序架構,學習查閱資料解決問題。習題具有連貫性,循序漸進,分組協作,最終逐步擴展為一個基于TCP/IP及多線程的完整C/S架構應用系統。
主要內容全書分為三部分,共14章:第一部分,全面闡述面向對象程序設計思想及Java基礎語法,內容包括第1章、第2章;第二部分,結合實例,以Java語言講述面向對象的三大特征及程序設計方法,內容包括第3~6章;第三部分,講述Java語言類庫、輸入/輸出、多線程、圖形用戶界面、數據庫、網絡及Android無線移動通信平臺中的圖形用戶界面,內容包括第7~14章。
各章內容介紹如下:
第1章介紹面向對象的基本概念、面向對象的三大特征(封裝、繼承和多態)、類的建模及其結構層次設計、面向對象程序設計原則,并對Java語言特點及開發環境eclipse進行了概要的介紹。
第2章全面介紹Java語言基礎知識及語法,具體包括Java語言基本元素、基本數據類型、引用數據類型、基本數據類型的封裝類、運算符、表達式及流程控制。
第3章講述類與對象。從如何設計類開始,到對象的創建及使用方法、static靜態成員的基本特征、方法重載、包的概念、類的訪問控制,以及基礎類庫。
第4章講述異常處理,包括異常的概念、異常的分類、異常的處理機制、自定義異常類。
第5章講述類的重用,包括類的繼承和類的組合兩種方式的語法實現,并介紹了抽象類與抽象方法、類成員方法的覆蓋。
第6章講述接口與多態,從接口存在的必要性入手,逐步引導讀者理解接口如何在程序結構中實現多重繼承、多態的概念及實現、多態的適用環境,以及內部類的概念及使用方法。
第7章講述Java的集合框架及其提供的幾種集合,并介紹了泛型的相關知識及其在集合中的應用。
第8章講述輸入/輸出,包括I/O流的概念、I/O流的分類、文件讀寫以及對象的序列化。
第9章講述JDBC訪問數據庫,主要介紹JDBC技術的原理、JDBC API、通過JDBC訪問數據庫、實現與數據庫的連接,以及訪問數據庫的一系列操作。
第10章講述Java圖形用戶界面,具體包括Java圖形用戶界面類庫、Swing的組件、Swing組件的層次結構、Swing GUI 程序、事件處理機制、eclipse下的可視化圖形界面編程。
第11章講述Java多線程,具體包括進程與線程的概念、多線程編程基礎、線程的生命周期、線程的常用方法、多線程的編程方式、死鎖等相關問題的處理。擴展講解了高級并發提供的幾種機制,包括Lock與Condition、讀寫鎖、阻塞隊列、線程池等。
第12章講述Java Socket網絡編程,包括基于TCP/UDP 的單線程C/S模式或者多線程C/S模式。
第13章講述Java 非阻塞IO(NIO),包括Java NIO包含的3個核心對象緩沖區、通道、選擇器及其操作方法,以及NIO Socket的通信機制。
第14章講述Android圖形用戶界面開發,包括Android框架及應用程序組件、開發環境配置、Android 圖形用戶界面的各種控件及其使用示例。
本書提供完整的示例程序來講解基本概念,所有程序都在eclipse4.5 Mars環境下編譯運行通過,本書提供電子教學課件及各章例題。
致謝在書稿的完成過程中,機械工業出版社的編輯此書的出版給予了周到的安排和支持,同時也得到了家人、朋友的大力支持,使此書得以在短時間內出版,在此對他們表示真摯的感謝!
盡管作者具有程序設計方面的教學經驗以及軟件項目開發經驗,但由于時間倉促及水平有限,難免存在不妥之處,懇請廣大讀者給予批評指正。
編者2016年5月
前言
教學建議
第1章 面向對象程序設計思想 1
1.1 類和對象 1
1.2 面向對象程序設計的三大特征 3
1.2.1 封裝 4
1.2.2 繼承 4
1.2.3 多態 5
1.3 面向對象的程序設計 7
1.3.1 類的建模 7
1.3.2 類的層次結構設計 8
1.3.3 面向對象程序設計原則 9
1.4 Java語言簡介 10
1.4.1 Java語言的特點 12
1.4.2 Java程序的開發環境 13
1.4.3 第一個Java程序 14
本章小結 19
習題 19
第2章 Java語言基礎知識 21
2.1 Java語言基本元素 21
2.2 Java基本數據類型 22
2.3 引用數據類型 26
2.3.1 枚舉 26
2.3.2 數組 27
2.4 基本數據類型的封裝類 34
2.5 運算符及表達式 37
2.5.1 算術運算符 37
2.5.2 關系運算符 39
2.5.3 邏輯運算符與邏輯表達式 39
2.5.4 賦值運算符 40
2.5.5 位運算符 40
2.5.6 其他運算符 41
2.5.7 表達式 42
2.6 Java控制語句 42
2.6.1 分支結構 42
2.6.2 循環結構 44
2.6.3 中斷結構 46
本章小結 49
習題 49
第3章 類與對象 51
3.1 類與對象的創建 51
3.2 對象的初始化 54
3.3 數據成員及方法 56
3.3.1 訪問數據成員及方法 56
3.3.2 方法中參數傳遞的問題 57
3.3.3 toString()方法 58
3.4 類的使用 60
3.4.1 static數據 60
3.4.2 static方法 62
3.4.3 終態final 63
3.4.4 方法重載 63
3.4.5 this指針 64
3.4.6 對象的回收 67
3.4.7 包 68
3.4.8 類的訪問控制 71
3.5 Java基礎類庫 73
3.5.1 語言包java.lang 74
3.5.2 實用包java.util 81
3.6 Java注釋 83
3.6.1 Annotation的定義 84
3.6.2 基本Annotation 85
3.6.3 Annotation的用途 85
3.6.4 Java文檔生成器 86
本章小結 89
習題 89
第4章 異常處理 91
4.1 異常的概念 91
4.2 異常的分類 92
4.3 異常的處理機制 94
4.3.1 非檢查型異常處理 94
4.3.2 檢查型異常處理 96
4.4 自定義異常類 101
本章小結 104
習題 105
第5章 類的重用 106
5.1 類的重用概述 106
5.2 重用方式之一——繼承 107
5.2.1 父類與子類 107
5.2.2 繼承的語法 107
5.2.3 子類的數據成員 110
5.2.4 子類的方法 111
5.2.5 繼承關系下的構造方法 114
5.3 抽象類與抽象方法 117
5.4 重用方式之二——類的組合 121
5.4.1 組合的語法 121
5.4.2 組合與繼承的結合 123
本章小結 126
習題 127
第6章 接口與多態 128
6.1 接口的概念及用途 128
6.2 接口的聲明及實現 129
6.3 接口與抽象類的比較 140
6.4 多態 144
6.4.1 向上轉型的概念及方法調用 145
6.4.2 靜態綁定和動態綁定 145
6.4.3 多態的實現 147
6.4.4 多態的應用 148
6.5 內部類 149
6.5.1 內部類的概念 150
6.5.2 靜態內部類 151
6.5.3 內部類實現接口及抽象類 151
6.5.4 方法中的內部類 152
6.5.5 匿名的內部類 153
本章小結 154
習題 154
第7章 Java集合框架 156
7.1 集合框架概述 156
7.2 Collection接口 158
7.3 List接口 158
7.3.1 LinkedList 159
7.3.2 ArrayList 159
7.4 泛型 160
7.4.1 泛型的定義及實例化 160
7.4.2 泛型在集合中的應用 162
7.5 迭代器 165
7.6 Set接口 167
7.7 Map接口 169
7.8 Collections類 172
7.9 比較器 173
7.10 Lambda表達式 175
本章小結 177
習題 177
第8章 輸入/輸出 178
8.1 I/O流的概念 178
8.2 I/O流的種類 179
8.2.1 字節流 179
8.2.2 字符流 180
8.2.3 標準輸入/輸出數據流 182
8.3 文件輸入/輸出流 185
8.3.1 字符輸出流 185
8.3.2 字符輸入流 187
8.3.3 字節輸出流 188
8.3.4 字節輸入流 190
8.3.5 File類 193
8.3.6 隨機文件的讀寫 195
8.4 對象序列化 197
本章小結 200
習題 200
第9章 JDBC 201
9.1 JDBC簡介 201
9.2 JDBC架構 201
9.3 JDBC API 202
9.4 在eclipse環境下通過JDBC訪問數據庫 204
9.4.1 配置開發環境 204
9.4.2 調用JDBC API編寫應用程序 205
9.5 JDBC處理存儲過程 216
9.6 SQLException 218
9.7 控制事務 218
9.8 JDBC其他相關用法 219
本章小結 220
習題 220
第10章 Java圖形用戶界面 221
10.1 Java圖形用戶界面類庫 221
10.2 Swing的組件 222
10.3 Swing組件的層次結構 223
10.4 Swing GUI程序 224
10.4.1 頂層容器 225
10.4.2 中間層容器 226
10.4.3 布局管理器 228
10.4.4 Swing組件 231
10.5 事件處理機制 236
10.5.1 事件響應 236
10.5.2 事件處理的實現方法 239
10.6 Swing Designer可視化圖形界面編程 244
本章小結 256
習題 256
第11章 多線程 257
11.1 進程與線程 257
11.2 多線程創建方式 258
11.2.1 Thread類 258
11.2.2 Runnable接口 260
11.3 守護線程 261
11.4 線程的生命周期 262
11.5 線程的常用方法 264
11.6 線程的優先級 268
11.7 多線程的編程方式 268
11.7.1 不相關的線程 269
11.7.2 相關但無須同步的線程 269
11.7.3 同步線程 270
11.7.4 交互式線程 274
11.8 死鎖 278
11.9 高級并發 279
11.9.1 Lock和Condition 280
11.9.2 讀寫鎖 282
11.9.3 阻塞隊列(BlockingQueue) 284
11.9.4 線程池 287
本章小結 289
習題 290
第12章 Java Socket網絡編程 291
12.1 網絡通信協議 291
12.2 Socket基本概念 293
12.3 TCP Socket編程 294
12.3.1 TCP Socket點到點通信 294
12.3.2 TCP Socket多線程通信 299
12.4 UDP Socket編程 302
12.4.1 UDP Socket點到點通信 302
12.4.2 UDP Socket多線程通信 307
12.4.3 UDP Socket組播通信 308
本章小結 310
習題 310
第13章 Java非阻塞IO(NIO) 312
13.1 Java NIO與標準IO的區別 312
13.2 NIO的核心對象 312
13.2.1 通道 313
13.2.2 緩沖區 317
13.2.3 選擇器 319
13.3 NIO Socket通信單線程模式 321
13.4 基于反應器的NIO Socket多線程模式 324
本章小結 325
習題 325
第14章 Android圖形用戶界面開發簡介 326
14.1 Android概述 326
14.2 Android系統架構 327
14.3 Android應用程序組件 328
14.4 Android的圖形界面元素 329
14.4.1 視圖和視圖組 329
14.4.2 布局管理 331
14.4.3 事件驅動 331
14.5 eclipse下的Android開發環境配置 332
14.6 Android圖形用戶界面開發示例 335
14.6.1 Android應用程序目錄結構 335
14.6.2 創建按鈕示例 336
14.7 常用的Android控件 338
本章小結 350
習題 351
參考文獻 352