-- 會員 / 註冊 --  
 帳號:
 密碼:
  | 註冊 | 忘記密碼
3/26 新書到! 3/19 新書到! 3/14 新書到! 12/12 新書到!
購書流程Q & A站務留言版客服信箱
3ds MaxMayaRhinoAfter EffectsSketchUpZBrushPainterUnity
PhotoShopAutoCadMasterCamSolidWorksCreoUGRevitNuke
C#CC++Java遊戲程式Linux嵌入式PLCFPGAMatlab
駭客資料庫搜索引擎影像處理FluentVR+ARANSYS深度學習
單晶片AVROpenGLArduinoRaspberry Pi電路設計CadenceProtel
HadoopPythonStm32CortexLabview手機程式AndroidiPhone
可查書名,作者,ISBN,3dwoo書號
詳細書籍分類

Java核心編程

( 簡體 字)
作者:柳偉衛類別:1. -> 程式設計 -> JAVA -> Java
譯者:
出版社:清華大學出版社Java核心編程 3dWoo書號: 52724
詢問書籍請說出此書號!

缺書
NT售價: 445

出版日:6/1/2020
頁數:
光碟數:0
站長推薦:
印刷:語系: ( 簡體 版 )
加入購物車 加到我的最愛
(請先登入會員)
ISBN:9787302552949
作者序 | 譯者序 | 前言 | 內容簡介 | 目錄 | 
(簡體書上所述之下載連結耗時費功, 恕不適用在台灣, 若讀者需要請自行嘗試, 恕不保證)
作者序:

譯者序:

前言:

寫作背景
隨著互聯網應用的發展,各種編程語言層出不窮,比如C#、Golang、TypeScript、ActionScript等,但不管是哪種語言,都無法撼動Java的“霸主”地位。Java語言始終占據著各類編程語言排行榜的榜首,開發者對于Java的熱情也是與日俱增。Java已然成為企業級應用和Cloud Native應用的首選語言。
那么為什么Java一直能保持這么火爆呢?究其原因,Java能夠長盛不衰的最大秘訣就是能夠與時俱進、不斷推陳出新。
筆者從事Java開發已經有十幾年了,可以說是Java技術發展的見證者和實踐者。為了推廣Java技術,筆者撰寫了包括《分布式系統常用技術及案例分析》《Spring Boot 企業級應用開發實戰》《Spring Cloud 微服務架構開發實戰》《Spring 5開發大全》《Cloud Native 分布式架構原理與實踐》等幾十本Java領域的專著和開源書,期望以微薄之力對Java語言有所貢獻。由于目前企業所使用的Java大多是Java 8之前的版本,市面上也缺乏Java 13的學習資料,因此筆者才撰寫本書以補空白。
讓我們一起踏上Java學習之旅吧!
本書重要主題
? 構建Java開發環境
? Java語言基礎
? 面向對象編程
? 集合框架
? 異常處理
? I/O處理
? 網絡編程
? 并發編程
? 基本編程結構的改進
? 垃圾回收器的增強
? 使用腳本語言
? Lambda表達式與函數式編程
? Stream
? 集合的增強
? 新的日期和時間API
? 并發編程的增強
? 模塊化
? 響應式編程
本書開發環境及JDK版本
本書示例采用Eclipse編寫,但示例源碼與具體的IDE無關,讀者可以選擇適合自己的IDE,如IntelliJ IDEA、NetBeans等。運行本書示例,請確保JDK版本不低于13。
源代碼
本書提供源代碼下載,下載地址為https://github.com/waylau/modern-java-demos。
致謝
感謝清華大學出版社王金柱編輯,在本書寫作過程中他審閱了大量的稿件,給予了很多指導和幫助。感謝工作在幕后的清華大學出版社評審團隊對本書在校對、排版、審核、封面設計、錯誤改正等方面所做出的努力,使本書得以順利出版發行。
感謝我的父母、妻子和兩個女兒。由于撰寫本書犧牲了很多陪伴家人的時間,在此感謝家人對我工作的理解和支持。
獻給
本書獻給那些以Java為矛的工程師!


柳偉衛
2020.3.8
內容簡介:

本書主要基于Java 13來介紹Java核心編程相關的知識點,以及從Java 8至Java 13以來的新特性,主要內容包括:Java語言基礎、面向對象編程、集合框架、異常處理、I/O處理、網絡編程、并發編程、基本編程結構的改進、垃圾回收器的增強、使用腳本語言、Lambda表達式與函數式編程、Stream、集合的增強、新的日期和時間API、并發編程的增強、模塊化、響應式編程等內容。通過本書的學習,讀者不僅能夠掌握Java語言的編程技巧,還可以拓展視野,提升市場競爭能力。
本書主要面向Java語言的愛好者、Java工程師和架構師。
目錄:

第1章JAVA概述 1
1.1Java演進史 1
1.1.1Java簡史 1
1.1.2Java大有可為 3
1.2現代Java新特性:從Java8到Java13 3
1.2.1Java8新特性 3
1.2.2Java9新特性 4
1.2.3Java10新特性 4
1.2.4Java11新特性 5
1.2.5Java12新特性 5
1.2.6Java13新特性 5
1.3如何學習本書 6
1.3.1學習的前置條件 6
1.3.2如何使用本書 6
1.3.3如何獲取源碼 7
1.4開發環境配置及編寫第一個Java應用 7
1.4.1JDK13的下載 7
1.4.2JDK13的安裝 8
1.4.3Eclipse的下載 10
1.4.4Eclipse的安裝 10
1.4.5Eclipse的配置 11
1.4.6創建Java應用 11
1.4.7創建模塊 12
1.4.8創建HelloWorld程序 13
1.4.9使用JUnit5 14

第2章JAVA語言基礎 17
2.1變量 17
2.1.1命名 18
2.1.2基本數據類型 18
2.1.3基本數據類型的默認值 21
2.1.4字面值 21
2.1.5基本數據類型之間的轉換 24
2.1.6數組 26
2.2運算符 29
2.2.1賦值運算符 30
2.2.2算術運算符 30
2.2.3一元運算符 32
2.2.4等價和關系運算符 33
2.2.5條件運算符 34
2.2.6instanceof運算符 36
2.2.7位運算符和位移運算符 37
2.3表達式、語句和塊 39
2.3.1表達式 39
2.3.2語句 40
2.3.3塊 41
2.4控制流程語句 41
2.4.1if-then 41
2.4.2if-then-else 42
2.4.3switch 43
2.4.4while 48
2.4.5do-while 49
2.4.6for 50
2.4.7break 51
2.4.8continue 53
2.4.9return 55
2.5枚舉類型 55
2.6泛型 58
2.6.1泛型的作用 58
2.6.2泛型類型 59
2.6.3泛型方法 62
2.6.4有界類型參數 63
2.6.5泛型的繼承和子類型 64
2.6.6通配符 66
2.6.7類型擦除 69
2.6.8使用泛型的一些限制 71
2.7關鍵字 74
第3章面向對象編程基礎 76
3.1編程的抽象 76
3.2類的示例 78
3.3對象的接口 79
3.4包 81
3.5對象提供服務 82
3.6隱藏實現的細節 82
3.6.1為什么需要控制對成員的訪問 83
3.6.2Java的作用域 83
3.7實現的重用 84
3.8繼承 84
3.8.1Java中的繼承 84
3.8.2關于Shape的討論 86
3.8.3實戰:繼承的示例 87
3.9is-a和is-like-a的關系 88
3.10多態性 88
3.10.1多態的定義 89
3.10.2理解多態的好處 89
第4章集合框架 90
4.1集合框架概述 90
4.1.1集合框架的定義 90
4.1.2Java集合框架的優點 91
4.1.3集合框架常見的接口 91
4.1.4集合框架的實現 92
4.2Collection接口 93
4.2.1遍歷集合 93
4.2.2集合接口批量操作 94
4.3Set接口 95
4.3.1HashSet、TreeSet和LinkedHashSet的比較 95
4.3.2Set接口基本操作 96
4.3.3Set接口批量操作 97
4.4Map接口 97
4.4.1Map接口基本操作 97
4.4.2Map接口批量操作 98
4.4.3Map集合視圖 98
4.5List接口 99
4.5.1集合操作 99
4.5.2位置訪問和搜索操作 100
4.5.3List的迭代器 100
4.5.4范圍視圖操作 100
4.5.5List常用算法 101
4.6Queue接口 101
4.7Deque接口 102
4.7.1插入 103
4.7.2移除 103
4.7.3檢索 103
第5章異常處理 104
5.1異常捕獲與處理 104
5.1.1先從一個例子入手 104
5.1.2try塊 106
5.1.3catch塊 106
5.1.4在一個異常處理程序中處理多個類型的異常 107
5.1.5finally塊 107
5.1.6try-with-resources語句 108
5.2通過方法聲明拋出異常 110
5.3如何拋出異常 111
5.3.1throw語句 111
5.3.2Throwable類及其子類 112
5.3.3Error類 112
5.3.4Exception類 112
5.4異常鏈 113
5.4.1訪問堆棧跟蹤信息 113
5.4.2記錄異常日志 114
5.5創建異常類 115
5.5.1一個創建異常類的例子 115
5.5.2選擇超類 115
5.6未檢查異常 116
5.7使用異常帶來的優勢 116
5.7.1將錯誤處理代碼與“常規”代碼分離 116
5.7.2將錯誤沿調用堆棧向上傳遞 118
5.7.3對錯誤類型進行分組和區分 119
5.8try-with-resources語句的詳細用法 120
5.8.1手動關閉資源 121
5.8.2Java7中的try-with-resources介紹 121
5.8.3try-with-resources在Java9中的改進 123
5.9實戰:使用try-with-resources 123
第6章I/O處理 126
6.1I/O流 126
6.1.1字節流 126
6.1.2字符流 128
6.1.3面向行的I/O 129
6.1.4緩沖流 130
6.1.5刷新緩沖流 130
6.1.6掃描和格式化文本 130
6.1.7命令行I/O 135
6.1.8數據流 137
6.1.9對象流 138
6.2文件I/O 141
6.2.1路徑 141
6.2.2Path類 143
6.2.3Path的操作 143
6.2.4文件操作 151
6.2.5檢查文件或目錄 153
6.2.6刪除文件或目錄 154
6.2.7復制文件或目錄 154
6.2.8移動一個文件或目錄 155
第7章網絡編程 156
7.1網絡基礎 156
7.1.1了解OSI參考模型 156
7.1.2TCP/IP網絡模型與OSI模型的對比 157
7.1.3了解TCP 158
7.1.4了解UDP 158
7.1.5了解端口 159
7.2Socket 160
7.2.1了解Socket 160
7.2.2實戰:實現一個echo服務器 161
7.3I/O模型的演進 163
7.3.1UNIXI/O模型的基本概念 163
7.3.2UNIXI/O模型 163
7.3.3常見JavaI/O模型 168
7.4HTTPClientAPI概述 175
7.5HttpRequest 176
7.6HttpResponse 176
7.7實戰:HTTPClientAPI的使用例子 177
7.7.1發起同步請求 177
7.7.2發起異步請求 179
第8章并發編程 180
8.1了解線程 180
8.1.1線程的狀態 180
8.1.2進程和線程 181
8.1.3線程和纖程 182
8.1.4Java中的線程對象 182
8.1.5實戰:多線程示例 185
8.2并發編程是把雙刃劍 187
8.2.1死鎖 187
8.2.2饑餓 188
8.2.3活鎖 189
8.3解決并發問題的常用方法 189
8.3.1同步 189
8.3.2原子訪問 193
8.3.3無鎖化設計提升并發能力 194
8.3.4緩存提升并發能力 194
8.3.5更細顆粒度的并發單元 194
8.4守衛塊 195
8.5不可變對象 197
8.5.1一個同步類的例子 197
8.5.2定義不可變對象的策略 199
8.6高級并發對象 201
8.6.1鎖對象 201
8.6.2執行器 203
8.6.3并發集合 209
8.6.4原子變量 210
8.6.5并發隨機數 211
第9章基本編程結構的改進 212
9.1直接運行Java源代碼 212
9.1.1Java11可以直接運行Java源碼 213
9.1.2原理 214
9.2局部變量類型推斷 214
9.2.1了解var聲明變量的一些限制 215
9.2.2原理 215
9.3實戰:var關鍵字的使用 215
9.4字符串處理增強 216
9.4.1支持RawStringLiterals 216
9.4.2原理 217
9.4.3限制 217
9.4.4Java11常用StringAPI 218
9.4.5Java12常用StringAPI 219
9.5實戰:Java11字符串的使用 220
9.5.1RawStringLiterals的使用 220
9.5.2StringAPI的使用 221
9.6支持Unicode標準 223
9.6.1了解Unicode10 223
9.6.2在控制臺打印出Emoji 224
9.6.3在GUI中顯示出Emoji 224
9.7Optional類 226
9.7.1復現NullPointerException 226
9.7.2Optional類的魔法 228
9.7.3Optional類的其他方法 229
9.8接口中的默認方法 232
9.9實戰:接口中默認方法的使用 234
9.10接口中的靜態方法 235
9.11實戰:接口中靜態方法的使用 236
9.12Switch表達式增強 237
9.12.1實戰:Switch表達式的例子 237
9.12.2使用Switch表達式的注意事項 238
9.13緊湊數字格式 238
9.14文本塊 239
第10章垃圾回收器的增強 241
10.1了解G1 241
10.1.1了解Java垃圾回收機制 241
10.1.2查找不再使用的對象 242
10.1.3垃圾回收算法 242
10.1.4分代垃圾回收 242
10.1.5Java垃圾回收器的歷史 243
10.1.6了解G1的原理 243
10.1.7了解G1YoungGC 245
10.1.8了解G1MixedGC 246
10.2了解ZGC 249
10.2.1更短的停頓 249
10.2.2ZGC的著色指針和讀屏障 250
10.2.3讀屏障 251
10.2.4GC工作原理 251
10.2.5將未使用的堆內存返回給操作系統 253
10.3了解Epsilon 253
10.4了解Shenandoah 254
10.4.1Shenandoah工作原理 254
10.4.2性能指標 255
第11章使用腳本語言 257
11.1什么是JShell 257
11.2為什么需要JShell 257
11.3JShell的基本操作 258
11.3.1啟動JShell 258
11.3.2退出JShell 258
11.3.3使用JShell測試API 258
11.3.4使用JShell操作流 259
11.3.5獲取幫助 259
11.4實戰:JShell的綜合用法 260
11.4.1定義方法 260
11.4.2使用自定義的方法 261
11.4.3查看所有的變量及引用情況 261
11.4.4保存歷史 261
11.4.5打開文件 262
11.4.6獲取變量的引用值 262
第12章LAMBDA表達式及函數式編程 263
12.1Lambda表達式 263
12.1.1第一個Lambda表達式的例子 263
12.1.2第二個Lambda表達式的例子 264
12.1.3Lambda表達式簡寫的依據 265
12.2方法引用 265
12.2.1什么是方法引用 266
12.2.2實戰:方法引用的例子 266
12.3構造函數引用 267
12.4函數式接口 268
12.4.1Predicate 268
12.4.2Consumer 269
12.4.3Function 270
12.4.4總結 271
12.5Consumer接口 271
12.5.1andThen 272
12.5.2IntConsumer 272
12.5.3LongConsumer 273
12.5.4DoubleConsumer 273
12.5.5BiConsumer 274
12.6Supplier接口 275
12.6.1get 275
12.6.2BooleanSupplier 275
12.6.3IntSupplier 276
12.6.4LongSupplier 276
12.6.5DoubleSupplier 277
12.7Predicate接口 277
12.7.1test 278
12.7.2negate 278
12.7.3or 279
12.7.4and 279
12.7.5not 279
12.7.6IntPredicate 280
12.7.7BiPredicate 281
12.8Function接口 282
12.8.1compose 283
12.8.2andThen 283
12.8.3identity 283
12.9類型檢查 284
12.10類型推導 285
12.11使用本地變量 285
第13章STREAM 287
13.1StreamAPI概述 287
13.1.1什么是聚合操作 287
13.1.2什么是Stream 288
13.1.3Stream的構成 289
13.2實例:Stream使用的例子 290
13.2.1傳統的過濾數據的做法 290
13.2.2Stream過濾數據的做法 291
13.3Stream簡化了編程 291
13.4Stream常用操作 292
13.4.1collect(toList())終止操作 292
13.4.2map中間操作 293
13.4.3filter中間操作 293
13.4.4count終止操作 293
13.4.5min終止操作 293
13.4.6max終止操作 294
13.4.7reduce終止操作 294
13.5過濾數據 294
13.6切分數據 295
13.6.1使用Predicate切分數據 295
13.6.2截斷Stream 297
13.6.3跳過元素 297
13.7映射 298
13.7.1map 298
13.7.2flatMap 298
13.8查找和匹配 300
13.8.1allMatch 300
13.8.2anyMatch 300
13.8.3noneMatch 300
13.8.4findFirst 301
13.8.5findAny 301
13.9壓縮數據 301
13.9.1計算總和 302
13.9.2計算最大值和最小值 302
13.10構造Stream 303
13.10.1從值中構造 303
13.10.2從nullable中構造 304
13.10.3從數組中構造 304
13.10.4從集合中構造 304
13.10.5從文件中構造 304
13.11收集收據 305
13.11.1Collector接口 305
13.11.2Collectors 307
13.11.3統計總數 308
13.11.4計算最大值和最小值 309
13.11.5求和 309
13.11.6求平均數 310
13.11.7連接字符串 310
13.11.8分組 310
13.11.9分區 311
13.12并行計算 311
13.12.1并行流 312
13.12.2Stream與parallelStream的抉擇 312
13.13Spliterator接口 313
第14章集合的增強 314
14.1集合工廠 314
14.1.1List工廠 315
14.1.2Set工廠 316
14.1.3Map工廠 316
14.2實戰:List工廠的使用 317
14.3實戰:Set工廠的使用 318
14.4實戰:Map工廠的使用 318
14.5List和Set常用方法 319
14.5.1removeIf 319
14.5.2replaceAll 320
14.6實戰:removeIf方法的使用 321
14.7實戰:replaceAll方法的使用 321
14.8Map常用方法 322
14.8.1forEach 322
14.8.2sorted 323
14.8.3getOrDefault 323
14.9實戰:forEach方法的使用 324
14.10實戰:sorted的使用 324
14.11實戰:getOrDefault方法的使用 325
14.12實戰:計算操作 325
14.12.1computeIfAbsent 325
14.12.2computeIfPresent 326
14.12.3compute 326
14.13實戰:移除操作 327
14.14實戰:替換操作 327
14.14.1replaceAll 327
14.14.2replace 328
14.15實戰:合并操作 328
14.16ConcurrentHashMap的改進 329
14.16.1Java8之前的ConcurrentHashMap類 329
14.16.2Java8之后的ConcurrentHashMap類的改進 330
第15章新的日期和時間API 334
15.1了解LocalDate 334
15.2了解LocalTime 335
15.3了解LocalDateTime 336
15.4了解Instant 338
15.5了解Duration 339
15.6了解Period 339
15.7常用日期的操作 340
15.8調整時間 341
15.9格式化日期 342
15.10時區處理 343
15.11日歷 345
第16章并發編程的增強 346
16.1Stream的parallel()方法 346
16.2執行器及線程池 346
16.2.1線程及線程數 347
16.2.2線程池 347
16.2.3Java8中的Executors增強 348
16.2.4了解線程池的風險 348
16.3FutureAPI 350
16.3.1并行提交任務 350
16.3.2順序返回結果 352
16.4CompletableFuture 352
16.4.1CompletionStage 353
16.4.2CompletableFuture 353
16.4.3CompletableFuture類使用示例 354
16.5異步API中的異常處理 355
16.6box-and-channel模型 357
16.7實例:在線商城 357
16.8實例:同步方法轉為異步 358
16.8.1異常處理 360
16.8.2使用supplyAsync簡化代碼 360
第17章模塊化 362
17.1為什么需要模塊化 362
17.1.1體積大 363
17.1.2訪問控制粒度不夠細 363
17.1.3依賴地獄 364
17.2用模塊化開發和設計Java應用 364
17.2.1模塊的聲明 364
17.2.2模塊的零件 365
17.2.3模塊描述 366
17.2.4平臺模塊 366
第18章響應式編程 368
18.1響應式編程概述 368
18.1.1FlowControl的幾種解決方案 369
18.1.2Pull、Push與Pull-Push 369
18.1.3FlowAPI與StreamAPI 370
18.2FlowAPI 370
18.2.1訂閱者Subscriber 370
18.2.2Subscriber示例 371
18.2.3發布者Publisher 372
18.2.4訂閱Subscription 372
18.2.5處理器Processor 373
18.3實戰:響應式編程綜合示例 373
18.3.1定義Subscriber 373
18.3.2定義Publisher 375
18.3.3運行應用 377
參考文獻 383
序: