注冊 | 登錄讀書好,好讀書,讀好書!
讀書網(wǎng)-DuShu.com
當(dāng)前位置: 首頁出版圖書科學(xué)技術(shù)計(jì)算機(jī)/網(wǎng)絡(luò)家庭與辦公軟件瘋狂Java講義精粹(第2版)

瘋狂Java講義精粹(第2版)

瘋狂Java講義精粹(第2版)

定 價:¥59.90

作 者: 李剛 著
出版社: 電子工業(yè)出版社
叢編項(xiàng):
標(biāo) 簽: Java Java Script J2EE 程序設(shè)計(jì) 計(jì)算機(jī)/網(wǎng)絡(luò)

ISBN: 9787121243462 出版時間: 2014-10-01 包裝: 平裝
開本: 其他 頁數(shù): 448 字?jǐn)?shù):  

內(nèi)容簡介

  《瘋狂Java講義精粹(第2版)》是《瘋狂Java講義精粹》的第2版,本書相比《瘋狂Java講義》更淺顯易懂,講解更細(xì)致,本書同樣介紹了Java 8的新特性,本書大部分示例程序都采用Lambda表達(dá)式、流式API進(jìn)行了改寫,因此務(wù)必使用Java 8的JDK來編譯、運(yùn)行。本書盡量淺顯、直白地介紹Java編程的相關(guān)方面,全書內(nèi)容覆蓋了Java的基本語法結(jié)構(gòu)、Java的面向?qū)ο筇卣?、Java集合框架體系、Java泛型、異常處理、Java注釋、Java的IO流體系、Java多線程編程、Java網(wǎng)絡(luò)通信編程。覆蓋了java.lang、java.util、java.text、java.io和java.nio包下絕大部分類和接口。本書全面介紹了Java 8的新的接口語法、Lambda表達(dá)式、方法引用、構(gòu)造器引用、函數(shù)式編程、流式編程、新的日期、時間API、并行支持、改進(jìn)的類型推斷、重復(fù)注解、JDBC 4.2新特性等新特性。

作者簡介

  張?jiān)缕?13:48:41十多年軟件開發(fā)從業(yè)經(jīng)驗(yàn),瘋狂軟件教育中心教學(xué)總監(jiān)。瘋狂Java實(shí)訓(xùn)營創(chuàng)始人,瘋狂Java體系原創(chuàng)圖書作者。廣東技術(shù)師范學(xué)院計(jì)算機(jī)科學(xué)系兼職副教授,51CTO專家門診特邀嘉賓。培訓(xùn)的學(xué)生已在華為、IBM、阿里軟件、網(wǎng)易、電信盈科等名企就職。國內(nèi)著名高端IT技術(shù)作家,已出版《瘋狂Java講義》、《瘋狂Android講義》、《輕量級Java EE企業(yè)應(yīng)用實(shí)戰(zhàn)》、《瘋狂iOS講義(上)(下)》、《瘋狂Ajax講義》、《瘋狂XML講義》、《經(jīng)典Java EE企業(yè)應(yīng)用實(shí)戰(zhàn)》、《Struts 2.x權(quán)威指南》、《瘋狂HTML 5/CSS 3/JavaScript講義》等著作。其中瘋狂Java體系圖書均已沉淀多年、贏得極高的市場認(rèn)同、多次重印成為超級暢銷圖書,并被多所“985”、“211”高校選作教材,部分圖書已被翻譯成繁體中文版、授權(quán)到臺灣地區(qū)。

圖書目錄

第1章 Java語言概述與開發(fā)環(huán)境 1
1.1 Java語言的發(fā)展簡史 2
1.2 Java程序運(yùn)行機(jī)制 4
1.2.1 高級語言的運(yùn)行機(jī)制 4
1.2.2 Java程序的運(yùn)行機(jī)制和JVM 4
1.3 開發(fā)Java的準(zhǔn)備 5
1.3.1 下載和安裝Java 8的JDK 5
不是說JVM是運(yùn)行Java程序的虛擬機(jī)嗎?那JRE和JVM的關(guān)系是怎樣的呢? 6
1.3.2 設(shè)置PATH環(huán)境變量 8
為什么不安裝公共JRE呢? 7
為什么選擇用戶變量?用戶變量與系統(tǒng)變量有什么區(qū)別? 9
1.4 第一個Java程序 9
1.4.1 編輯Java源代碼 9
1.4.2 編譯Java程序 10
當(dāng)編譯C程序時,不僅需要指定存放目標(biāo)文件的位置,也需要指定目標(biāo)文件的文件名,這里使用javac編譯Java程序時怎么不需要指定目標(biāo)文件的文件名呢? 10
1.4.3 運(yùn)行Java程序 11
1.4.4 根據(jù)CLASSPATH環(huán)境變量定位類 11
1.5 Java程序的基本規(guī)則 12
1.5.1 Java程序的組織形式 12
1.5.2 Java源文件的命名規(guī)則 13
1.5.3 初學(xué)者容易犯的錯誤 13
1.6 何時開始使用IDE工具 15
我想學(xué)習(xí)Java編程,到底是學(xué)習(xí)Eclipse好,還是學(xué)習(xí)NetBeans好呢? 16
1.7 本章小結(jié) 16
本章練習(xí) 16
第2章 數(shù)據(jù)類型和運(yùn)算符 17
2.1 注釋 18
2.1.1 單行注釋和多行注釋 18
2.1.2 文檔注釋 19
API文檔是什么? 19
為什么要學(xué)習(xí)查看API文檔的方法? 21
2.2 標(biāo)識符和關(guān)鍵字 24
2.2.1 分隔符 24
2.2.2 標(biāo)識符規(guī)則 25
2.2.3 Java關(guān)鍵字 26
2.3 數(shù)據(jù)類型分類 26
什么是變量?變量有什么用? 26
2.4 基本數(shù)據(jù)類型 27
2.4.1 整型 27
2.4.2 字符型 29
什么是字符集? 29
2.4.3 浮點(diǎn)型 31
2.4.4 數(shù)值中使用下畫線分隔 32
2.4.5 布爾型 32
2.5 基本類型的類型轉(zhuǎn)換 33
2.5.1 自動類型轉(zhuǎn)換 33
2.5.2 強(qiáng)制類型轉(zhuǎn)換 34
2.5.3 表達(dá)式類型的自動提升 35
2.6 直接量 36
2.6.1 直接量的類型 36
2.6.2 直接量的賦值 37
2.7 運(yùn)算符 38
2.7.1 算術(shù)運(yùn)算符 38
2.7.2 賦值運(yùn)算符 40
2.7.3 位運(yùn)算符 41
2.7.4 擴(kuò)展后的賦值運(yùn)算符 43
2.7.5 比較運(yùn)算符 43
2.7.6 邏輯運(yùn)算符 44
2.7.7 三目運(yùn)算符 45
2.7.8 運(yùn)算符的結(jié)合性和優(yōu)先級 46
2.8 本章小結(jié) 47
本章練習(xí) 47
第3章 流程控制與數(shù)組 48
3.1 順序結(jié)構(gòu) 49
3.2 分支結(jié)構(gòu) 49
3.2.1 if條件語句 49
3.2.2 增強(qiáng)后的switch分支語句 53
3.3 循環(huán)結(jié)構(gòu) 54
3.3.1 while循環(huán)語句 55
3.3.2 do while循環(huán)語句 56
3.3.3 for循環(huán) 57
3.3.4 嵌套循環(huán) 59
3.4 控制循環(huán)結(jié)構(gòu) 60
3.4.1 使用break結(jié)束循環(huán) 60
3.4.2 使用continue忽略本次循環(huán)剩下語句 61
3.4.3 使用return結(jié)束方法 62
3.5 數(shù)組類型 63
3.5.1 理解數(shù)組:數(shù)組也是一種類型 63
int[]是一種類型嗎?怎么使用這種類型呢? 63
3.5.2 定義數(shù)組 63
3.5.3 數(shù)組的初始化 64
能不能只分配內(nèi)存空間,不賦初始值呢? 64
3.5.4 使用數(shù)組 65
為什么要我記住這些異常信息? 66
3.5.5 foreach循環(huán) 66
3.6 深入數(shù)組 68
3.6.1 沒有多維數(shù)組 68
我是否可以讓圖3.3中灰色覆蓋的數(shù)組元素再次指向另一個數(shù)組?這樣不就可以擴(kuò)展成三維數(shù)組,甚至擴(kuò)展成更多維的數(shù)組嗎? 69
3.6.2 Java 8增強(qiáng)的工具類:Arrays 70
3.7 本章小結(jié) 73
本章練習(xí) 73
第4章 面向?qū)ο螅ㄉ希?74
4.1 類和對象 75
4.1.1 定義類 75
構(gòu)造器不是沒有返回值嗎?為什么不能用void聲明呢? 77
4.1.2 對象的產(chǎn)生和使用 77
4.1.3 對象、引用和指針 78
4.1.4 對象的this引用 79
4.2 方法詳解 83
4.2.1 方法的所屬性 83
4.2.2 方法的參數(shù)傳遞機(jī)制 83
4.2.3 形參個數(shù)可變的方法 87
4.2.4 遞歸方法 88
4.2.5 方法重載 89
為什么方法的返回值類型不能用于區(qū)分重載的方法? 90
4.3 成員變量和局部變量 90
4.3.1 成員變量和局部變量 90
4.3.2 成員變量的初始化和內(nèi)存中的運(yùn)行機(jī)制 94
4.3.3 局部變量的初始化和內(nèi)存中的運(yùn)行機(jī)制 95
4.3.4 變量的使用規(guī)則 96
4.4 隱藏和封裝 97
4.4.1 理解封裝 97
4.4.2 使用訪問控制符 97
4.4.3 package、import和import static 100
4.4.4 Java的常用包 104
4.5 深入構(gòu)造器 105
4.5.1 使用構(gòu)造器執(zhí)行初始化 105
構(gòu)造器是創(chuàng)建Java對象的途徑,是不是說構(gòu)造器完全負(fù)責(zé)創(chuàng)建Java對象? 106
4.5.2 構(gòu)造器重載 106
為什么要用this來調(diào)用另一個重載的構(gòu)造器?我把另一個構(gòu)造器里的代碼復(fù)制、粘貼到這個構(gòu)造器里不就可以了嗎? 107
4.6 類的繼承 108
4.6.1 繼承的特點(diǎn) 108
4.6.2 重寫父類的方法 109
4.6.3 super限定 110
4.6.4 調(diào)用父類構(gòu)造器 112
為什么我創(chuàng)建Java對象時從未感覺到j(luò)ava.lang. Object類的構(gòu)造器被調(diào)用過? 114
4.7 多態(tài) 115
4.7.1 多態(tài)性 115
4.7.2 引用變量的強(qiáng)制類型轉(zhuǎn)換 116
4.7.3 instanceof運(yùn)算符 117
4.8 初始化塊 118
4.8.1 使用初始化塊 118
4.8.2 初始化塊和構(gòu)造器 120
4.8.3 靜態(tài)初始化塊 120
4.9 本章小結(jié) 123
本章練習(xí) 123
第5章 面向?qū)ο螅ㄏ拢?124
5.1 Java 8增強(qiáng)的包裝類 125
Java為什么要對這些數(shù)據(jù)進(jìn)行緩存呢? 128
5.2 處理對象 129
5.2.1 打印對象和toString方法 129
5.2.2 ==和equals方法 130
上面程序中判斷obj是否為Person類的實(shí)例時,為何不用obj instanceof Person來判斷呢? 134
5.3 類成員 134
5.3.1 理解類成員 134
5.3.2 單例(Singleton)類 135
5.4 final修飾符 136
5.4.1 final成員變量 136
5.4.2 final局部變量 138
5.4.3 final修飾基本類型變量和引用類型變量的區(qū)別 139
5.4.4 可執(zhí)行“宏替換”的final變量 139
5.4.5 final方法 141
5.4.6 final類 142
5.5 抽象類 142
5.5.1 抽象方法和抽象類 142
5.5.2 抽象類的作用 145
5.6 Java 8改進(jìn)的接口 146
5.6.1 接口的概念 146
5.6.2 Java 8中接口的定義 147
5.6.3 接口的繼承 149
5.6.4 使用接口 149
5.6.5 接口和抽象類 151
5.7 內(nèi)部類 152
5.7.1 非靜態(tài)內(nèi)部類 152
非靜態(tài)內(nèi)部類對象和外部類對象的關(guān)系是怎樣的? 155
5.7.2 靜態(tài)內(nèi)部類 156
為什么靜態(tài)內(nèi)部類的實(shí)例方法也不能訪問外部類的實(shí)例屬性呢? 157
接口里是否能定義內(nèi)部接口? 158
5.7.3 使用內(nèi)部類 158
既然內(nèi)部類是外部類的成員,那么是否可以為外部類定義子類,在子類中再定義一個內(nèi)部類來重寫其父類中的內(nèi)部類呢? 160
5.7.4 局部內(nèi)部類 160
5.7.5 Java 8改進(jìn)的匿名內(nèi)部類 161
5.8 Java 8新增的Lambda表達(dá)式 164
5.8.1 Lambda表達(dá)式入門 164
5.8.2 Lambda表達(dá)式與函數(shù)式接口 166
5.8.3 方法引用與構(gòu)造器引用 168
5.8.4 Lambda表達(dá)式與匿名內(nèi)部類的聯(lián)系和區(qū)別 171
5.8.5 使用Lambda表達(dá)式調(diào)用Arrays的類方法 172
5.9 枚舉類 172
5.9.1 手動實(shí)現(xiàn)枚舉類 173
5.9.2 枚舉類入門 173
5.9.3 枚舉類的成員變量、方法和構(gòu)造器 175
5.9.4 實(shí)現(xiàn)接口的枚舉類 177
枚舉類不是用final修飾了嗎?怎么還能派生子類呢? 178
5.9.5 包含抽象方法的枚舉類 178
5.10 修飾符的適用范圍 179
5.11 本章小結(jié) 180
本章練習(xí) 180
第6章 Java基礎(chǔ)類庫 181
6.1 與用戶互動 182
6.1.1 運(yùn)行Java程序的參數(shù) 182
6.1.2 使用Scanner獲取鍵盤輸入 183
6.2 系統(tǒng)相關(guān) 185
6.2.1 System類 185
6.2.2 Runtime類 187
6.3 常用類 188
6.3.1 Object類 188
6.3.2 Objects類 189
6.3.3 String、StringBuffer和StringBuilder類 190
6.3.4 Math類 193
6.3.5 ThreadLocalRandom與Random 195
6.3.6 BigDecimal類 196
6.4 Java 8的日期、時間類 199
6.4.1 Date類 199
6.4.2 Calendar類 199
6.4.3 Java 8新增的日期、時間包 202
6.5 Java 8新增的日期、時間格式器 204
6.5.1 使用DateTimeFormatter完成格式化 205
6.5.2 使用DateTimeFormatter解析字符串 206
6.6 本章小結(jié) 206
本章練習(xí) 206
第7章 Java集合 207
7.1 Java集合概述 208
7.2 Collection和Iterator接口 209
7.2.1 使用Lambda表達(dá)式遍歷集合 211
7.2.2 使用Java 8增強(qiáng)的Iterator遍歷集合元素 211
7.2.3 使用Lambda表達(dá)式遍歷Iterator 213
7.2.4 使用foreach循環(huán)遍歷集合元素 213
7.2.5 使用Java 8新增的Predicate操作集合 214
7.2.6 使用Java 8新增的Stream操作集合 215
7.3 Set集合 217
7.3.1 HashSet類 217
hashCode()方法對于HashSet是不是十分重要? 219
7.3.2 LinkedHashSet類 221
7.3.3 TreeSet類 222
7.4 List集合 227
7.4.1 Java 8改進(jìn)的List接口和ListIterator接口 227
7.4.2 ArrayList和Vector實(shí)現(xiàn)類 231
7.4.3 固定長度的List 231
7.5 Queue集合 232
7.5.1 PriorityQueue實(shí)現(xiàn)類 232
7.5.2 Deque接口與ArrayDeque實(shí)現(xiàn)類 233
7.5.3 LinkedList實(shí)現(xiàn)類 235
7.5.4 各種線性表的性能分析 236
7.6 Java 8增強(qiáng)的Map集合 236
7.6.1 Java 8為Map新增的方法 238
7.6.2 Java 8改進(jìn)的HashMap和Hashtable實(shí)現(xiàn)類 239
7.6.3 LinkedHashMap實(shí)現(xiàn)類 242
7.6.4 使用Properties讀寫屬性文件 243
7.6.5 SortedMap接口和TreeMap實(shí)現(xiàn)類 244
7.6.6 各Map實(shí)現(xiàn)類的性能分析 246
7.7 HashSet和HashMap的性能選項(xiàng) 246
7.8 操作集合的工具類:Collections 247
7.8.1 排序操作 247
7.8.2 查找、替換操作 250
7.8.3 同步控制 251
7.8.4 設(shè)置不可變集合 251
7.9 煩瑣的接口:Enumeration 252
7.10 本章小結(jié) 253
本章練習(xí) 253
第8章 泛型 254
8.1 泛型入門 255
8.1.1 編譯時不檢查類型的異常 255
8.1.2 使用泛型 255
8.1.3 泛型的“菱形”語法 256
8.2 深入泛型 257
8.2.1 定義泛型接口、類 257
8.2.2 從泛型類派生子類 259
8.2.3 并不存在泛型類 260
8.3 類型通配符 260
8.3.1 使用類型通配符 262
8.3.2 設(shè)定類型通配符的上限 262
8.3.3 設(shè)定類型形參的上限 264
8.4 泛型方法 264
8.4.1 定義泛型方法 265
8.4.2 泛型方法和類型通配符的區(qū)別 267
8.4.3 “菱形”語法與泛型構(gòu)造器 268
8.4.4 設(shè)定通配符下限 269
8.4.5 泛型方法與方法重載 271
8.4.6 Java 8改進(jìn)的類型推斷 272
8.5 擦除和轉(zhuǎn)換 272
8.6 泛型與數(shù)組 274
8.7 本章小結(jié) 275
第9章 異常處理 276
9.1 異常概述 277
9.2 異常處理機(jī)制 278
9.2.1 使用try...catch捕獲異常 278
9.2.2 異常類的繼承體系 279
9.2.3 多異常捕獲 282
9.2.4 訪問異常信息 282
9.2.5 使用finally回收資源 283
9.2.6 異常處理的嵌套 285
9.2.7 自動關(guān)閉資源的try語句 286
9.3 Checked異常和Runtime異常體系 287
9.3.1 使用throws聲明拋出異常 287
9.4 使用throw拋出異常 289
9.4.1 拋出異常 289
9.4.2 自定義異常類 290
9.4.3 catch和throw同時使用 291
9.4.4 增強(qiáng)的throw語句 292
9.4.5 異常鏈 293
9.5 Java的異常跟蹤棧 294
9.6 異常處理規(guī)則 296
9.6.1 不要過度使用異常 296
9.6.2 不要使用過于龐大的try塊 297
9.6.3 避免使用Catch All語句 298
9.6.4 不要忽略捕獲到的異常 298
9.7 本章小結(jié) 298
本章練習(xí) 298
第10章 Annotation(注解) 299
10.1 基本Annotation 300
10.1.1 限定重寫父類方法:@Override 300
10.1.2 標(biāo)示已過時:@Deprecated 301
10.1.3 抑制編譯器警告:@SuppressWarnings 302
10.1.4 “堆污染”警告與@SafeVarargs 302
10.1.5 Java 8的函數(shù)式接口與@FunctionalInterface 303
10.2 JDK的元Annotation 304
10.2.1 使用@Retention 304
10.2.2 使用@Target 305
10.2.3 使用@Documented 305
10.2.4 使用@Inherited 306
10.3 自定義Annotation 307
10.3.1 定義Annotation 307
10.3.2 提取Annotation信息 308
10.3.3 使用Annotation的示例 310
10.3.4 Java 8新增的重復(fù)注解 314
10.3.5 Java 8新增的Type Annotation 316
10.4 編譯時處理Annotation 317
10.5 本章小結(jié) 320
第11章 輸入/輸出 321
11.1 File類 322
11.1.1 訪問文件和目錄 322
11.1.2 文件過濾器 324
11.2 理解Java的IO流 324
11.2.1 流的分類 325
11.2.2 流的概念模型 326
11.3 字節(jié)流和字符流 327
11.3.1 InputStream和Reader 327
11.3.2 OutputStream和Writer 329
11.4 輸入/輸出流體系 330
11.4.1 處理流的用法 330
11.4.2 輸入/輸出流體系 331
11.4.3 轉(zhuǎn)換流 333
怎么沒有把字符流轉(zhuǎn)換成字節(jié)流的轉(zhuǎn)換流呢? 334
11.4.4 推回輸入流 334
11.5 重定向標(biāo)準(zhǔn)輸入/輸出 336
11.6 RandomAccessFile 337
11.7 NIO.2 340
11.7.1 Path、Paths和Files核心API 341
11.7.2 使用FileVisitor遍歷文件和目錄 342
11.7.3 使用WatchService監(jiān)控文件變化 343
11.7.4 訪問文件屬性 344
11.8 本章小結(jié) 346
本章練習(xí) 346
第12章 多線程 347
12.1 線程概述 348
12.1.1 線程和進(jìn)程 348
12.1.2 多線程的優(yōu)勢 349
12.2 線程的創(chuàng)建和啟動 349
12.2.1 繼承Thread類創(chuàng)建線程類 350
12.2.2 實(shí)現(xiàn)Runnable接口創(chuàng)建線程類 351
12.2.3 使用Callable和Future創(chuàng)建線程 352
12.2.4 創(chuàng)建線程的三種方式對比 354
12.3 線程的生命周期 354
12.3.1 新建和就緒狀態(tài) 354
12.3.2 運(yùn)行和阻塞狀態(tài) 356
12.3.3 線程死亡 357
12.4 控制線程 358
12.4.1 join線程 358
12.4.2 后臺線程 359
12.4.3 線程睡眠:sleep 360
12.4.4 線程讓步:yield 360
12.4.5 改變線程優(yōu)先級 362
12.5 線程同步 363
12.5.1 線程安全問題 363
12.5.2 同步代碼塊 365
12.5.3 同步方法 366
12.5.4 釋放同步監(jiān)視器的鎖定 368
12.5.5 同步鎖(Lock) 369
12.5.6 死鎖 371
12.6 線程通信 372
12.6.1 傳統(tǒng)的線程通信 372
12.6.2 使用Condition控制線程通信 376
12.6.3 使用阻塞隊(duì)列(BlockingQueue)控制線程通信 378
12.7 線程池 380
12.7.1 Java 8改進(jìn)的線程池 381
12.7.2 Java 8增強(qiáng)的ForkJoinPool 382
12.8 線程相關(guān)類 386
12.8.1 ThreadLocal類 386
12.8.2 包裝線程不安全的集合 387
12.8.3 線程安全的集合類 388
12.9 本章小結(jié) 389
本章練習(xí) 389
第13章 網(wǎng)絡(luò)編程 390
13.1 網(wǎng)絡(luò)編程的基礎(chǔ)知識 391
13.1.1 網(wǎng)絡(luò)基礎(chǔ)知識 391
13.1.2 IP地址和端口號 392
13.2 Java的基本網(wǎng)絡(luò)支持 393
13.2.1 使用InetAddress 393
13.2.2 使用URLDecoder和URLEncoder 393
13.2.3 URL、URLConnection和URLPermission 395
13.3 基于TCP協(xié)議的網(wǎng)絡(luò)編程 401
13.3.1 TCP協(xié)議基礎(chǔ) 401
13.3.2 使用ServerSocket創(chuàng)建TCP服務(wù)器端 401
13.3.3 使用Socket進(jìn)行通信 402
13.3.4 加入多線程 404
13.3.5 記錄用戶信息 407
13.3.6 半關(guān)閉的Socket 414
13.3.7 使用NIO實(shí)現(xiàn)非阻塞Socket通信 415
13.3.8 使用AIO實(shí)現(xiàn)非阻塞通信 420
上面程序中好像沒用到④⑤號代碼的get()方法的返回值,這兩個地方不調(diào)用get()方法行嗎? 424
13.4 使用代理服務(wù)器 427
13.4.1 直接使用Proxy創(chuàng)建連接 427
13.4.2 使用ProxySelector自動選擇代理服務(wù)器 428
13.5 本章小結(jié) 431
本章練習(xí) 431

本目錄推薦

掃描二維碼
Copyright ? 讀書網(wǎng) m.ranfinancial.com 2005-2020, All Rights Reserved.
鄂ICP備15019699號 鄂公網(wǎng)安備 42010302001612號