本書主要介紹了Java語言的編程技術。全書共15章,介紹了Java語言的由來、面向?qū)ο蟪绦虻某醪皆O計、標識符、關鍵字、數(shù)據(jù)類型、運算符、表達式、流程控制、數(shù)組、面向?qū)ο缶幊踢M階的知識、高級類的特性、Java基本類庫、Java異常處理、Java泛型、集合、Java線程編程、Java I/O系統(tǒng)、網(wǎng)絡編程及Android下的Java高效編程等。本書內(nèi)容由淺入深,通俗易懂。每章都有課后練習題,幫助讀者鞏固所學知識。
1.邊學邊練讓讀者能夠熟練編寫Java代碼,同時讓讀者能在編寫代碼時了解每一個知識點的原理,為軟件開發(fā)打下堅實的基礎。
2.重視面向?qū)ο,希望讀者能從根源上了解Java語言,知其然也知其所以然。
3.配有豐富微課視頻,幫助讀者解決學習中的重點難點。
季久峰,國內(nèi)知名IT培訓專家,華清遠見教育集團創(chuàng)始人,中國嵌入式工程師職業(yè)教育理念的奠基人和開拓者,多年專注于嵌入式、物聯(lián)網(wǎng)和移動開發(fā)技術的推廣、普及,業(yè)內(nèi)高端IT專業(yè)技術培訓體系的積極倡導者和組織者,《高等院校嵌入式人才培養(yǎng)規(guī)劃教材》和《高等院校物聯(lián)網(wǎng)人才培養(yǎng)規(guī)劃教材》系列叢書主編。中國嵌入式系統(tǒng)產(chǎn)業(yè)協(xié)會第一屆理事會副理事長,榮獲中國“嵌入式系統(tǒng)十佳杰出青年”。
第 1章 Java語言的由來 1
1.1 什么是Java語言 2
1.2 Java語言的誕生 2
1.3 Java的發(fā)展經(jīng)歷 3
1.4 Java的現(xiàn)狀 5
1.5 Java虛擬機 5
1.5.1 Java虛擬機的起源與構(gòu)造 5
1.5.2 虛擬機的優(yōu)化 6
1.5.3 現(xiàn)實生活中的虛擬機 7
1.6 Java開發(fā)環(huán)境搭建 7
1.6.1 安裝JDK和配置Java開發(fā)環(huán)境 8
1.6.2 Eclipse的安裝 8
1.7 本章小結(jié) 8
課后練習題 9
第 2章 面向?qū)ο蟪绦虺醪皆O計 10
2.1 面向?qū)ο蟮母拍睢?1
2.1.1 從結(jié)構(gòu)化程序設計到面向?qū)ο蟪绦蛟O計 11
2.1.2 面向?qū)ο蟮奶卣鳌?1
2.2 面向?qū)ο蟪绦蛟O計 12
2.2.1 知識準備:面向?qū)ο缶幊绦g語 12
2.2.2 知識準備:對象 12
2.2.3 知識準備:類 13
2.2.4 知識準備:類的聲明 13
2.2.5 知識準備:屬性的聲明 15
2.2.6 知識準備:方法的聲明 15
2.2.7 知識準備:構(gòu)造器(構(gòu)造方法) 16
2.2.8 知識準備:對象的創(chuàng)建和使用 17
2.2.9 任務一:創(chuàng)建并引用一個對象 17
2.2.10 技能拓展任務:帶參數(shù)構(gòu)造器的聲明與使用 18
2.3 信息的封裝和隱藏 19
2.3.1 知識準備:信息的封裝 19
2.3.2 知識準備:信息的隱藏 19
2.4 Java源文件結(jié)構(gòu) 20
2.4.1 知識準備:package語句 20
2.4.2 知識準備:import語句 22
2.4.3 任務二:package語句和import語句實例 22
2.5 JDK中常用的包 23
2.6 本章小結(jié) 24
課后練習題 24
第3章 標識符、關鍵字與數(shù)據(jù)類型 26
3.1 Java注釋 27
3.1.1 知識準備:Java注釋使用規(guī)則 27
3.1.2 知識準備:利用javadoc生成API文檔 27
3.1.3 任務一:使用javadoc生成API文檔 30
3.2 分隔符和標識符 31
3.2.1 知識準備:空白分隔符 31
3.2.2 知識準備:普通分隔符 32
3.2.3 知識準備:Java語言標識符的組成規(guī)則 32
3.2.4 任務二:綜合使用Java分隔符和標識符 33
3.3 Java關鍵字/保留字 33
3.3.1 知識準備:Java關鍵字使用規(guī)范 33
3.3.2 知識準備:重點關鍵字解析 34
3.4 數(shù)據(jù)類型 34
3.4.1 知識準備:簡單類型 34
3.4.2 知識準備:非布爾型簡單數(shù)據(jù)類型之間的轉(zhuǎn)換 37
3.4.3 任務三:簡單數(shù)據(jù)類型轉(zhuǎn)換實例 38
3.4.4 知識準備:引用類型 38
3.4.5 任務四:引用類型程序?qū)嵗?9
3.4.6 技能拓展任務:分析對象的構(gòu)造和初始化 40
3.5 變量及其初始化 41
3.5.1 知識準備:局部變量 41
3.5.2 知識準備:成員變量 42
3.5.3 知識準備:變量初始化 43
3.5.4 知識準備:局部變量的初始化 43
3.5.5 知識準備:成員變量的初始化 44
3.5.6 任務五:成員變量的3種初始化方式 44
3.6 值傳遞和引用傳遞 45
3.6.1 知識準備:Java中的值傳遞 45
3.6.2 知識準備:Java中的引用傳遞 46
3.7 Java編碼規(guī)范 46
3.7.1 知識準備:命名規(guī)范 47
3.7.2 知識準備:代碼編寫格式規(guī)范 48
3.8 本章小結(jié) 48
課后練習題 48
第4章 運算符、表達式與流程控制 50
4.1 運算符 51
4.1.1 知識準備:算術運算符 51
4.1.2 知識準備:位運算符 52
4.1.3 知識準備:關系運算符和邏輯運算符 53
4.1.4 任務一:短路布爾運算 54
4.1.5 知識準備:三元運算符 56
4.1.6 知識準備:遞增/遞減運算符 56
4.1.7 知識準備:賦值運算符 56
4.1.8 任務二:簡單數(shù)據(jù)類型和引用數(shù)據(jù)類型的賦值操作 58
4.1.9 知識準備:運算符的優(yōu)先順序 59
4.1.10 技能拓展任務:字符串連接運算符 60
4.2 表達式 61
4.2.1 知識準備:表達式中運算符的結(jié)合性 61
4.2.2 知識準備:表達式中運算符的優(yōu)先順序 61
4.3 分支語句 62
4.3.1 知識準備:if語句 62
4.3.2 任務三:if語句的用法 63
4.3.3 知識準備:switch語句 64
4.3.4 任務四:switch語句實例 64
4.4 循環(huán)語句 66
4.4.1 知識準備:for語句 66
4.4.2 任務五:for循環(huán)語句實例 67
4.4.3 知識準備:while語句 68
4.4.4 知識準備:do…while語句 69
4.4.5 知識準備:break及continue語句 69
4.4.6 技能拓展任務:continue結(jié)合標簽的使用 71
4.5 本章小結(jié) 72
課后練習題 72
第5章 數(shù)組 74
5.1 數(shù)組的基本概念 75
5.2 一維數(shù)組 75
5.2.1 知識準備:一維數(shù)組的聲明 75
5.2.2 知識準備:一維數(shù)組的創(chuàng)建 75
5.2.3 任務一:一維數(shù)組的聲明與創(chuàng)建實例 76
5.2.4 知識準備:一維數(shù)組的初始化 76
5.2.5 知識準備:引用數(shù)組元素 79
5.2.6 任務二:引用數(shù)組實例——對數(shù)組排序 79
5.2.7 知識準備:簡單數(shù)據(jù)類型數(shù)組的內(nèi)存空間 80
5.2.8 技能拓展任務:數(shù)組復制 81
5.3 數(shù)據(jù)結(jié)構(gòu)及數(shù)組應用 83
5.3.1 知識準備:堆!83
5.3.2 任務三:使用數(shù)組實現(xiàn)堆!83
5.3.3 知識準備:隊列 85
5.3.4 任務四:使用數(shù)組實現(xiàn)隊列 85
5.3.5 知識準備:排序算法 87
5.3.6 技能拓展任務:排序算法實例 90
5.4 多維數(shù)組 91
5.4.1 知識準備:多維數(shù)組的聲明 91
5.4.2 知識準備:多維數(shù)組的創(chuàng)建 91
5.4.3 知識準備:多維數(shù)組的初始化 91
5.5 本章小結(jié) 92
課后練習題 92
第6章 面向?qū)ο缶幊踢M階 94
6.1 繼承 95
6.1.1 類的繼承 95
6.1.2 任務一:利用繼承實現(xiàn)通訊錄實例 97
6.1.3 訪問控制 99
6.2 super關鍵字 100
6.2.1 調(diào)用父類構(gòu)造器 100
6.2.2 調(diào)用父類的屬性和方法 101
6.2.3 任務二:super關鍵字的使用 101
6.3 this關鍵字 103
6.3.1 知識準備:使用this關鍵字獲得當前對象的引用 103
6.3.2 知識準備:在構(gòu)造器中調(diào)用構(gòu)造器 104
6.3.3 知識準備:static的含義 105
6.4 方法的覆蓋與重載 106
6.4.1 知識準備:方法的覆蓋 106
6.4.2 知識準備:方法重載 108
6.4.3 知識準備:構(gòu)造器重載 108
6.5 通常需要覆蓋的幾種方法 109
6.5.1 知識準備:對象的toString()方法 109
6.5.2 任務三:覆蓋toString()方法 110
6.5.3 知識準備:==和equals() 111
6.6 對象的初始化 114
6.7 封裝類 118
6.7.1 知識準備:Java中的封裝類 118
6.7.2 知識準備:自動拆箱和裝箱 119
6.7.3 知識拓展:在Java中實現(xiàn)小數(shù)的精確計算 121
6.8 本章小結(jié) 122
課后練習題 122
第7章 高級類特性 124
7.1 static關鍵字 125
7.1.1 static 125
7.1.2 static變量的引用方法 125
7.2 final關鍵字 126
7.2.1 final數(shù)據(jù) 126
7.2.2 final方法 126
7.2.3 final類 127
7.3 抽象類 127
7.3.1 abstract概述 127
7.3.2 abstract class 128
7.3.3 模板設計模式 128
7.4 接口 129
7.4.1 接口的定義 129
7.4.2 接口的使用 129
7.4.3 接口的擴展 129
7.4.4 抽象類和接口 130
7.5 多態(tài) 131
7.5.1 多態(tài)概述 131
7.5.2 instanceof概述 135
7.5.3 應用類型數(shù)據(jù)轉(zhuǎn)換 136
7.6 內(nèi)部類 137
7.6.1 內(nèi)部類定義 137
7.6.2 局部內(nèi)部類 137
7.6.3 匿名內(nèi)部類 138
7.6.4 內(nèi)部類的特性 139
7.7 修飾符的適用范圍 139
7.7.1 類的適用范圍 139
7.7.2 變量的適用范圍 139
7.7.3 方法的適用范圍 140
7.7.4 接口的適用范圍 140
7.8 本章小結(jié) 140
課后練習題 141
第8章 Java基本類庫 142
8.1 系統(tǒng)輸入 143
8.1.1 運行Java程序的參數(shù) 143
8.1.2 使用Scanner獲取鍵盤輸入 143
8.2 Lang包下的類 144
8.2.1 System類 144
8.2.2 Runtime類 145
8.2.3 Object類 145
8.2.4 String類、StringBuffer類、StringBuilder類和Math類 146
8.3 日期時間類 149
8.3.1 Date類和Calendar類 149
8.3.2 TimeZone類 150
8.4 本章小結(jié) 151
課后練習題 151
第9章 Java異常處理 152
9.1 異常概述 153
9.1.1 異常的概念 153
9.1.2 Error/Exception層次關系 153
9.1.3 數(shù)學計算異常示例 153
9.1.4 訪問空對象引起的異常示例 154
9.2 Java中異常的處理 155
9.2.1 常見異常 155
9.2.2 Java中的異常處理機制 155
9.2.3 通過try…catch…finally語句來處理異!155
9.2.4 將異常拋出 158
9.2.5 捕獲異常和拋出異常結(jié)合使用 161
9.2.6 進行方法覆蓋時對異常的處理 161
9.3 自定義異!162
9.3.1 知識準備:自定義異常概念 162
9.3.2 知識拓展:通過printStackTrace()追蹤異常源頭 163
9.4 本章小結(jié) 164
課后練習題 164
第 10章 Java泛型 166
10.1 泛型入門 167
10.2 泛型類 168
10.3 泛型方法 170
10.3.1 定義泛型方法 170
10.3.2 靜態(tài)方法使用泛型 171
10.4 泛型接口 172
10.4.1 使用泛型接口 172
10.4.2 繼承泛型接口 172
10.5 泛型的高級特性 173
10.5.1 泛型的通配符 173
10.5.2 泛型限定——上限 174
10.5.3 泛型限定——下限 175
10.6 本章小結(jié) 175
課后練習題 176
第 11章 集合 177
11.1 集合概述 178
11.2 集合的層次結(jié)構(gòu) 178
11.3 Collection接口 179
11.3.1 Collection接口介紹 179
11.3.2 關于Collection接口的子接口與類 179
11.3.3 實現(xiàn)集合的增刪改查 179
11.3.4 使用foreach循環(huán)進行遍歷 180
11.3.5 使用iterator接口進行遍歷 181
11.4 Set集合 183
11.4.1 HashSet類 183
11.4.2 TreeSet類 184
11.4.3 LinkedHashSet類 185
11.5 List集合 185
11.5.1 ArrayList類 186
11.5.2 LinkedList類 187
11.5.3 Vector類 188
11.5.4 Vector類與ArrayList類的區(qū)別 188
11.6 Map集合 188
11.6.1 HashMap類 189
11.6.2 Hashtable類 189
11.6.3 LinkedHashMap類 189
11.6.4 Map集合的遍歷 190
11.7 本章小結(jié) 190
課后練習題 191
第 12章 Java線程編程 192
12.1 線程概述 193
12.2 Java線程模型 194
12.3 創(chuàng)建線程 194
12.3.1 知識準備:繼承Thread類創(chuàng)建線程 194
12.3.2 知識準備:實現(xiàn)Runnable接口創(chuàng)建線程 195
12.3.3 知識準備:后臺線程概念 196
12.3.4 任務一:繼承Thread類創(chuàng)建線程實例 196
12.3.5 任務二:實現(xiàn)Runnable接口方式創(chuàng)建線程 197
12.3.6 技能拓展任務:實現(xiàn)守護線程實例 198
12.4 線程的運行機制 198
12.4.1 知識準備:線程的基本狀態(tài) 198
12.4.2 知識準備:線程的結(jié)束方式 199
12.4.3 任務三:線程的基本狀態(tài)實例 200
12.5 線程控制 201
12.5.1 知識準備:測試線程 201
12.5.2 知識準備:中斷線程 201
12.5.3 知識準備:設置線程優(yōu)先級 202
12.5.4 知識準備:Thread.join()線程等待 202
12.5.5 任務四:設置線程優(yōu)先級實例 203
12.5.6 技能拓展任務:線程的join()方法實現(xiàn)實例 204
12.6 多線程編程 207
12.6.1 知識準備:多線程概述 207
12.6.2 知識準備:多線程共享數(shù)據(jù) 209
12.6.3 知識準備:線程間通信 214
12.6.4 知識準備:實現(xiàn)線程間通信 214
12.6.5 知識拓展:定時器 217
12.7 多線程編程的一般規(guī)則 218
12.8 java.util.concurrent中的同步API 219
12.8.1 知識準備:線程池 219
12.8.2 知識準備:鎖 221
12.8.3 任務五:線程池實例 221
12.8.4 知識準備:使用鎖實例 223
12.8.5 知識準備:使用讀/寫鎖 228
12.8.6 技能拓展任務:使用Condition來實現(xiàn)線程間的通信 231
12.9 本章小結(jié) 233
課后練習題 234
第 13章 Java I/O系統(tǒng) 235
13.1 File類 236
13.1.1 目錄列表類 236
13.1.2 目錄實用工具 237
13.1.3 目錄的檢查及創(chuàng)建 237
13.2 輸入和輸出 238
13.2.1 InputStream類型 239
13.2.2 OutputStream類型 240
13.3 Reader和Writer 241
13.3.1 數(shù)據(jù)的來源和去處 241
13.3.2 更改流的行為 242
13.3.3 未發(fā)生變化的類 242
13.4 RandomAccessFile 243
13.5 I/O流的典型使用方式 243
13.5.1 緩沖輸入文件 243
13.5.2 從內(nèi)存中輸入 244
13.5.3 格式化的內(nèi)存輸入 244
13.5.4 基本的文件輸入 245
13.5.5 讀/寫隨機訪問文件 245
13.5.6 文件的復制 246
13.6 本章小結(jié) 248
課后練習題 248
第 14章 網(wǎng)絡編程 250
14.1 網(wǎng)絡基礎 251
14.1.1 網(wǎng)絡類型 251
14.1.2 網(wǎng)絡工作模式 251
14.1.3 網(wǎng)絡通信結(jié)構(gòu) 251
14.2 網(wǎng)絡通信協(xié)議 252
14.2.1 知識準備:TCP 252
14.2.2 知識準備:IP 252
14.2.3 知識準備:TCP/IP 253
14.2.4 知識準備:IP地址 253
14.2.5 端口 254
14.2.6 任務一:通過Java編程獲得IP地址 255
14.3 Socket套接字 256
14.4 Java Socket編程 257
14.4.1 ServerSocket 257
14.4.2 Socket類 257
14.4.3 Socket通信過程 258
14.4.4 任務二:Socket通信實例 258
14.5 Java URL類 260
14.5.1 知識準備:URL概念 260
14.5.2 知識準備:Java中的URL類 260
14.5.3 知識拓展:URL應用實例 261
14.6 本章小結(jié) 263
課后練習題 264
第 15章 Android下的Java高效編程 265
15.1 Android下Java編程性能優(yōu)化介紹 266
15.2 提升性能的優(yōu)化方法 266
15.2.1 使用本地方法 266
15.2.2 使用虛方法優(yōu)于使用接口 267
15.2.3 使用靜態(tài)代替虛擬 267
15.2.4 緩沖對象屬性調(diào)用 267
15.2.5 聲明final常量 268
15.2.6 考慮用包訪問權(quán)限替代私有訪問權(quán)限 268
15.2.7 使用改進的for循環(huán)語法 269
15.3 編程中注意避免的事項 270
15.3.1 避免創(chuàng)建不必要的對象 270
15.3.2 避免使用內(nèi)部的Getters/Setters 270
15.3.3 避免使用枚舉類型 270
15.3.4 避免使用浮點類型 271
15.4 標準操作的時間比較 271
15.5 本章小結(jié) 272
課后練習題 272