古人云,\"萬事開頭難”,熟練掌握Java語言是Java應用開發(fā)的**個臺階,能夠深入理解Java程序設計,是學習Java系列技術的必要前提。本教材結合作者多年開發(fā)和教學經(jīng)驗,從入門者的學習特點出發(fā),循序漸進地帶領讀者走進Java世界,使得\"開頭并不難”。全書主要分為六個部分,包括Java語言的類、類之間的關系、異常處理、常用API、其他特性總結和編程實戰(zhàn)。其中,編程實戰(zhàn)部分提供了連連看游戲的完整實現(xiàn),幫助讀者使用教材就能自主實現(xiàn)該案例,快速提高Java程序實踐能力。書中內容打破了傳統(tǒng)的堆砌知識點的方式,而是從解決問題的角度詮釋面向對象程序設計,涵蓋了企業(yè)實際工作中常用的技能與知識點,簡單明了,易讀易懂。本教材適合Java語言初學者以及Java程序員閱讀。
本書第1版自2011年9月面世以來,與《JavaEE主流開源框架》和《JavaEE架構與程序設計》一起,獲得了廣大師生的普遍歡迎和好評,其中修訂后的《JavaEE主流開源框架(第2版)》(“十二五”職業(yè)教育國家規(guī)劃教材,ISBN 978-7-121-23920-5)和《JavaEE架構與程序設計(第2版)》(ISBN 978-7-121-25136-8)已先于本書出版。
本書編者在實際工作中發(fā)現(xiàn),很多Java初學者甚至有開發(fā)經(jīng)驗的Java程序員,對Java語言的掌握都不夠系統(tǒng),沒有一個完整的知識體系,而僅僅掌握一些片面的內容。本書配套了PPT講義,并把講義內容顯示到每個章節(jié)的對應位置,這樣有助于讀者能夠快速了解每個章節(jié)的主要內容,建立起Java的完整知識體系,對整體掌握Java程序設計起到非常好的作用。本書也非常適合作為高校Java程序設計相關課程的教材使用,書中的PPT可以單獨下載,這樣能夠保證講師授課思路和順序完全與教材對應,取得良好的教學效果。附錄部分提供了企業(yè)關注的技能點,并從企業(yè)的角度給予了解析,能夠幫助讀者進一步整理書中內容,掌握企業(yè)需要的技能。
本書分成了6個部分,每一部分都專注一個大的主題,而各主題都是前后關聯(lián)、相輔相成的關系。讀者按照這6個部分進行學習,不僅能循序漸進地掌握Java編程語言的核心知識點,而且能真正建立面向對象的編程思想,實際完成一個編程項目。
第一部分:Java語言的類。既然Java應用都是由Java類組成的,所以首先需要了解Java類的相關知識,如Java的類由哪些部分組成,以及這些組成元素所涉及的知識點。本部分學習結束后,讀者將對一個Java類的各個組成部分都有深入理解。
第二部分:類之間的關系。第一部分已經(jīng)對一個獨立的Java類本身有了深入理解。然而,一個Java應用中不可能只有一個類,一定由多個類組成。既然有多個類,類與類之間就一定存在著各種關系。本部分將詳細講解類與類之間的各種關系,如關聯(lián)、依賴、繼承、實現(xiàn)。
第三部分:異常處理。學習完前兩部分后,讀者對于封裝、繼承、多態(tài)的概念已經(jīng)掌握。異常處理是保證程序魯棒性的一個有效方法,本部分主要學習Java的異常處理機制。
第四部分:核心API的使用。學習完前三部分后,讀者對于Java語言的核心概念已經(jīng)掌握。本部分主要關注Java語言核心API的使用,包括集合、輸入/輸出、GUI、線程等。本部分學習結束后,讀者能夠熟練使用常用的API進行編程。
第五部分:特性總結。本部分集中討論一些特性,如泛型、枚舉、可變參數(shù)、Annotation等,客觀討論每種特性的適用場合。
第六部分:編程實戰(zhàn)。本部分完整展示連連看游戲的實現(xiàn)過程。
本次修訂改版,編者為關鍵知識點錄制了一百多個微視頻課件,通過掃描關鍵知識點二維碼,即可通過移動終端在線播放和觀看。建議在無線網(wǎng)絡環(huán)境下播放和觀看微視頻課件。教材相關的PPT、源代碼及視頻均可到www.hxedu.com.cn下載,還可以在線免費申請樣書。
本書由王曉華和畢蘭蘭擔任主編,萬志偉和朱麗萍擔任副主編,全書由王曉華統(tǒng)稿。
在編寫本書的過程中,得到了很多領導、同事以及朋友的幫助。感謝中軟國際的所有領導以及CTO辦公室的所有同事,是你們的幫助、鼓勵以及支持才有這本書的問世。
由于編者水平有限,也由于時間倉促,書中一定存在一些不盡如人意的地方,甚至會有一些錯誤。如果您發(fā)現(xiàn)了任何內容方面的問題,煩請一定通知我們(wangxh@chinasofti.com),我們爭取盡快勘誤。
編 者
中軟國際教育科技集團教學總監(jiān)、宅客學院副院長、Oracle認證企業(yè)架構師。多年大型企業(yè)項目開發(fā)管理經(jīng)驗,多年IT人才教育經(jīng)驗,精通企業(yè)應用開發(fā)、項目管理、架構設計。
第一部分 Java語言的類
第1章 Java語言概述 2
1.1 Java語言的特點 2
1.2 面向對象的基本概念 3
1.3 第一個Java類 4
1.3.1 環(huán)境搭建 4
1.3.2 編譯運行Java類 6
1.4 本章小結 7
第2章 Java類的組成 8
2.1 類 8
2.2 屬性 9
2.3 方法 10
2.3.1 方法的聲明形式 10
2.3.2 方法重載 11
2.4 構造方法 12
2.5 塊 14
2.6 內部類 16
2.7 本章小結 16
第3章 訪問權限修飾符 17
3.1 包 17
3.2 4種訪問權限修飾符 18
3.3 封裝性 18
3.4 本章小結 19
第4章 數(shù)據(jù)類型 20
4.1 基本數(shù)據(jù)類型 20
4.2 引用類型 21
4.3 字符串類型 21
4.4 包裝器類型 23
4.5 值傳遞 24
4.6 本章小結 25
第5章 高級類特性 26
5.1 static 26
5.2 final 29
5.3 Java類中的變量總結 30
5.4 本章小結 31
第6章 操作符、流程控制 32
6.1 操作符 32
6.2 流程控制 36
6.2.1 流程控制概述 36
6.2.2 使用break/continue
語句控制循環(huán) 39
6.2.3 “中斷”語句比較 41
6.3 本章小結 41
第7章 第一部分自我測試 42
第二部分 類之間的關系
第8章 關聯(lián)關系 44
8.1 關聯(lián)關系的表示 44
8.2 關聯(lián)關系的方向 46
8.3 關聯(lián)關系的多重性 47
8.4 數(shù)組 47
8.4.1 數(shù)組的基本概念 47
8.4.2 數(shù)組的創(chuàng)建及長度 48
8.4.3 數(shù)組元素的訪問 49
8.4.4 數(shù)組的賦值 50
8.4.5 多維數(shù)組 51
8.4.6 數(shù)組的復制 52
8.4.7 Arrays類 53
8.5 本章小結 54
第9章 依賴關系 56
9.1 Java語言中依賴關系的表示 56
9.2 依賴與關聯(lián)的區(qū)別 57
9.3 本章小結 57
第10章 繼承關系 58
10.1 Java語言的繼承 58
10.2 繼承中構造方法的調用 59
10.3 方法覆蓋 62
10.4 抽象類 64
10.5 抽象方法 66
10.6 多態(tài)性 67
10.7 this和super關鍵字 69
10.8 final在繼承中的使用 71
10.9 static/abstract/final總結 71
10.10 關聯(lián)和繼承 72
10.11 Object類 73
10.12 本章小結 76
第11章 實現(xiàn)關系 77
11.1 接口定義 77
11.2 類與接口的關系:實現(xiàn) 78
11.3 接口的作用 79
11.4 接口的語法細節(jié) 80
11.5 Comparable接口 82
11.6 本章小結 85
第12章 第二部分自我測試 86
第三部分 異常處理
第13章 Java應用異常處理 88
13.1 什么是異常 88
13.2 Java標準異常類型 89
13.3 如何處理異常 91
13.4 如何拋出異常 96
13.5 為何要拋出異常 96
13.6 拋出異常后如何處理 97
13.7 自定義異常類 99
13.8 throw與throws總結 101
13.9 try finally的作用 102
13.10 再次拋出異常 103
13.11 本章小結 103
第14章 第三部分自我測試 104
第四部分 核心API的使用
第15章 集合框架 106
15.1 泛型快速入門 106
15.2 Java集合框架概述 108
15.3 Iterator接口 109
15.4 Collection及其子接口 109
15.5 List的實現(xiàn)類 110
15.6 Set的實現(xiàn)類 112
15.7 Map的實現(xiàn)類 115
15.8 Collections類 118
15.9 集合與數(shù)組之間的轉換 119
15.10 本章小結 121
第16章 輸入/輸出系統(tǒng) 122
16.1 File類 122
16.2 文件過濾器 124
16.3 IO流的分類 125
16.4 如何使用IO流 127
16.5 本章小結 129
第17章 GUI編程 130
17.1 GUI編程概述 130
17.2 Swing中的組件 131
17.3 Swing中的布局 132
17.4 Swing中的事件處理 134
17.5 使用內部類進行事件處理 136
17.6 使用匿名內部類進行事件
處理 137
17.7 GUI中的并發(fā)任務 138
17.8 本章小結 139
第18章 多線程編程 140
18.1 與線程有關的API 140
18.1.1 Thread類 140
18.1.2 Runnable接口 141
18.2 創(chuàng)建線程的方法 141
18.3 線程同步 144
18.4 線程通信 147
18.5 Thread類的方法 150
18.6 線程死鎖 151
18.7 守護線程 153
18.8 本章小結 153
第19章 Java網(wǎng)絡編程 154
19.1 TCP/IP概述 154
19.2 使用Socket進行基于TCP
的編程 155
19.3 使用Datagram進行基于
UDP的編程 159
19.4 本章小結 161
第20章 其他常用API 162
20.1 日期 162
20.2 國際化 166
20.3 格式化 168
20.4 大數(shù)據(jù)類型 171
20.5 反射 172
20.6 本章小結 175
第21章 第四部分自我測試 176
第五部分 特性總結
第22章 泛型 178
22.1 泛型介紹 178
22.2 定義簡單泛型類 179
22.3 泛型與繼承 180
22.4 通配符 181
22.5 泛型方法 182
22.6 本章小結 182
第23章 枚舉 183
23.1 為什么使用枚舉 183
23.2 枚舉的創(chuàng)建 185
23.3 Enum類 186
23.4 遍歷enum的值 187
23.5 enum的細節(jié)問題 187
23.6 本章小結 189
第24章 其他特性 190
24.1 增強for循環(huán) 190
24.2 自動裝箱、拆箱 191
24.3 靜態(tài)導入 192
24.4 可變參數(shù) 193
24.5 Annotation 194
24.6 本章小結 195
第25章 第五部分自我檢測 196
第六部分 編程實戰(zhàn)
第26章 連連看游戲實現(xiàn) 198
26.1 搭建工程基本結構 198
26.2 實現(xiàn)靜態(tài)界面 200
26.2.1 搭建只顯示菜單的
界面 201
26.2.2 實現(xiàn)展現(xiàn)游戲場景和
時間條的面板 203
26.2.3 將面板添加到游戲
框架 206
26.3 隨機生成游戲場景 207
26.3.1 創(chuàng)建抽象類
AbstractGameModel 207
26.3.2 創(chuàng)建
AbstractGameModel
實現(xiàn)類 210
26.3.3 隨機產(chǎn)生游戲場景 210
26.4 實現(xiàn)直連消除版本 211
26.4.1 修改AbstractGameModel
類 212
26.4.2 修改GameModelDefault
類 214
26.4.3 修改MainPanel類 215
26.4.4 啟動MainPanel創(chuàng)
建的線程對象 218
26.5 一折相連 219
26.5.1 創(chuàng)建Node類封裝
折點信息 220
26.5.2 修改AbstractGameModel
類 221
26.5.3 創(chuàng)建子類
GameModelOneTurn 222
26.5.4 修改MainPanel類 223
26.6 實現(xiàn)兩折相連消除版本 223
26.6.1 在AbstractGameModel
中添加新算法 224
26.6.2 創(chuàng)建新的模型子類
GameModelTwoTurn 225
26.6.3 修改MainPanel類 225
26.7 添加限時功能 226
26.8 添加重新開始游戲功能 228
26.9 添加可選擇關卡功能 229
26.9.1 在AbstractGameModel
中實現(xiàn)算法 229
26.9.2 修改MainPanel類 230
26.9.3 修改MainFrame類 230
26.10 添加可選擇模型功能 231
26.11 添加可選擇圖標功能 231
26.12 本章小結 232
附錄A 企業(yè)關注的技能 233
第一部分 Java語言的類 233
第二部分 類之間的關系 238
第三部分 異常處理 242
第四部分 核心API的使用 243
第五部分 特性總結 247