Java 編程思想, 4/e (Thinking in Java, 4/e) Java编程思想(第4版)
埃史爾
- 出版商: 機械工業
- 出版日期: 2007-06-01
- 售價: $648
- 貴賓價: 9.5 折 $616
- 語言: 簡體中文
- 頁數: 880
- 裝訂: 平裝
- ISBN: 7111213823
- ISBN-13: 9787111213826
-
相關分類:
Java 程式語言
- 此書翻譯自: Thinking in Java, 4/e (Paperback)
-
相關翻譯:
Thinking in Java 中文版 (Thinking in Java, 4/e) (繁中版)
立即出貨 (庫存 < 4)
買這商品的人也買了...
-
$880$695 -
$2,660Thinking in Java, 4/e (Paperback)
-
$414$393 -
$779$740 -
$580$452 -
$480$379 -
$860$731 -
$780$616 -
$474$450 -
$403Java 8 實戰 (Java 8 In Action)
-
$250函數式程式設計思維
-
$419$398 -
$607Java 核心技術 (捲Ⅰ) : 基礎知識, 10/e
-
$403第一行代碼 : Android, 2/e
-
$580$458 -
$774$735 -
$500$390 -
$600$474 -
$607Effective Java, 3/e (簡體中文版)
-
$469$446 -
$800$632 -
$774$735 -
$505Spring 實戰, 5/e (Spring in Action, 5/e)
-
$505Java 9 併發編程實戰
-
$594$564
相關主題
商品描述
《Java編程思想(第4版)》書共22章,包括操作符、控制執行流程、訪問權限控制、復用類、多態、接口、通過異常處理錯誤、字符串、泛型、數組、容器深入研究、Iava’UO系統、枚舉類型、並發以及圖形化用戶界面等內容。這些豐富的內容,包含了Java語言基礎語法以及高級特性,適合各個層次的Java程序員閱讀,同時也是高等院校講授面向對象程序設計語言以及Java語言的絕佳教材和參考書。
從《Java編程思想(第4版)》一書獲得的各項大獎以及來自世界各地的讀者評論中,不難看出這是一本經典之作。本書的作者擁有多年教學經驗,對c、c++以及Java語言都有獨到、深入的見解,以通俗易懂及小而直接的示例解釋了一個個晦澀抽象的概念。
★全球程序員必備圖書《Java編程思想》的最新版本!
點擊鏈接進入Java程序設計:
《深入理解Java虛擬機:JVM高級特性與**實踐》
《JAVA核心技術(捲1):基礎知識(原書第8版)》
《JAVA核心技術捲2:高級特徵》
《Java語言程序設計(基礎篇)(原書第8版)》
《Java編程思想(第4版)》
《Effective Java中文版(第2版)》
《Java編程思想(英文版•第4版)》
《Java 實時編程》
《Java加密與解密的藝術》
《Eclipse插件開發(原書第3版)(暢銷插件開發指南新版)》
《Java語言程序設計:進階篇(原書第8版)》
《Maven實戰》
海報:
作者簡介
Bruce Eckel是MindView公司的總裁,該公司向客戶提供軟件諮詢和培訓。他是C++標準委員會擁有表決權的成員之一,擁有應用物理學學士和計算機工程碩士學位。除本書外,他還是《C++編程思想》的作者,並與人合著了《C++編程思想第2卷》(這兩本書的英文影印版及中文版均已由機械工業出版社引進出版)及其他著作。他已經發表了150多篇論文,還經常參加世界各地的研討會並進行演講。
目錄大綱
出版者的話
專家指導委員會
讀者評論
關於《Thinking in C++》
譯者序
譯者簡介
前言
緒論
第1章對象導論1
1.1抽象過程1
1.2每個對像都有一個接口2
1.3每個對像都提供服務4
1.4被隱藏的具體實現4
1.5復用具體實現5
1.6繼承6
1.6.1 “是一個”與“像是一個”關係8
1.7伴隨多態的可互換對象8
1.8單根繼承結構11
1.9容器11
1.9 .1參數化類型(範型) 12
1.10對象的創建和生命期13
1.11異常處理:處理錯誤14
1.12並發編程14
1.13 Java與Internet 15
1.13.1 Web是什麼15
1.13.2客戶端編程16
1.13. 3服務器端編程19
1.14總結20
第2章一切都是對象21
2.1用引用操縱對象21
2.2必須由你創建所有對象22
2.2.1存儲到什麼地方22
2.2.2特例:基本類型23
2.2.3 Java中的數組24
2.3永遠不需要銷毀對象24
2.3.1作用域24
2.3.2對象的作用域25
2.4創建新的數據類型:類25
2.4.1字段和方法26
2.5方法、參數和返回值27
2.5.1參數列表27
2.6構建一個Java程序28
2.6.1名字可見性28
2.6.2運用其他構件28
2.6.3 static關鍵字29
2.7你的第一個Java程序30
2.7.1編譯和運行31
2.8註釋和嵌入式文檔32
2.8.1註釋文檔32
2.8.2語法33
2.8.3嵌入式HTML 33
2.8.4一些標籤示例34
2.8.5文檔示例35
2.9編碼風格36
2.10總結36
2.11練習37
第3章操作符38
3.1更簡單的打印語句38
3.2使用Java操作符39
3.3優先級39
3.4賦值39
3.4.1方法調用中的別名問題40
3.5算術操作符41
3.5.1一元加、減操作符43
3.6自動遞增和遞減43
3.7關係操作符44
3.7.1測試對象的等價性44
3.8邏輯操作符45
3.8.1短路46
3.9直接常量47
3.9.1指數記數法48
3.10按位操作符49
3.11移位操作符49
3.12三元操作符if-else 52
3.13字符串操作符+和+= 53
3.14使用操作符時常犯的錯誤54
3.15類型轉換操作符54
3.15 .1截尾和舍入55
3.15.2提升56
3.16 Java沒有sizeof 56
3.17操作符小結56
3.18總結63
第4章控制執行流程64
4.1 true和false 64
4.2 if-else 64
4.3迭代65
4.3.1 do -while 65
4.3.2 for 66
4.3.3逗號操作符67
4.4 Foreach語法67
4.5 return 69
4.6 break和continue 69
4.7臭名昭著的goto 70
4.8 switch 73
4.9總結75
第5章初始化與清理76
5.1用構造器確保初始化76
5.2方法重載77
5.2.1區分重載方法79
5.2.2涉及基本類型的重載79
5.2.3以返回值區分重載方法82
5.3默認構造器83
5.4 this關鍵字84
5.4.1在構造器中調用構造器85
5.4.2 static的含義86
5.5清理:終結處理和垃圾回收87
5.5.1 finalize()的用途何在87
5.5. 2你必須實施清理88
5.5.3終結條件88
5.5.4垃圾回收器如何工作89
5.6成員初始化91
5.6.1指定初始化93
5.7構造器初始化94
5.7.1初始化順序94
5.7.2靜態數據的初始化95
5.7.3顯式的靜態初始化96
5.7.4非靜態實例初始化97
5.8數組初始化98
5.8.1可變參數列表102
5.9枚舉類型105
5.10總結107
第6章訪問權限控制109
6.1包:庫單元110
6.1.1代碼組織110
6.1.2創建獨一無二的包名111
6.1.3定制工具庫114
6.1.4用import改變行為115
6.1.5對使用包的忠告115
6.2 Java訪問權限修飾詞116
6.2.1包訪問權限116
6.2.2 public:接口訪問權限116
6.2.3 private:你無法訪問118
6.2.4 protected:繼承訪問權限118
6.3接口和實現120
6.4類的訪問權限121
6.5總結123
第7章復用類125
7.1組合語法125
7.2繼承語法127
7.2.1初始化基類129
7.3代理130
7.4結合使用組合和繼承132
7.4.1確保正確清理133
7.4.2名稱屏蔽135
7.5在組合與繼承之間選擇137
7.6 protected關鍵字138
7.7向上轉型139
7.7.1為什麼稱為向上轉型139
7.7.2再論組合與繼承140
7.8 final關鍵字140
7.8.1 final數據140
7.8.2 final方法143
7.8.3 final類144
7.8.4有關final的忠告145
7.9初始化及類的加載145
7.9.1繼承與初始化146
7.10總結147
第8章多態148
8.1再論向上轉型148
8.1.1忘記對像類型149
8.2轉機150
8.2.1方法調用綁定150
8.2.2產生正確的行為151
8.2.3可擴展性153
8.2.4缺陷:“覆蓋”私有方法156
8.2.5缺陷:域與靜態方法156
8.3構造器和多態157
8.3. 1構造器的調用順序157
8.3.2繼承與清理159
8.3.3構造器內部的多態方法的行為162
8.4協變返回類型164
8.5用繼承進行設計165
8.5.1純繼承與擴展166
8.5.2向下轉型與運行時類型識別167
8.6總結168
第9章接口169
9.1抽像類和抽象方法169
9.2接口172
9.3完全解耦174
9.4 Java中的多重繼承178
9.5通過繼承來擴展接口180
9.5.1組合接口時的名字衝突181
9.6適配接口181
9.7接口中的域183
9.7.1初始化接口中的域184
9.8嵌套接口185
9.9接口與工廠186
9.10總結188
第10章內部類190
10.1創建內部類190
10.2鏈接到外部類191
10.3使用.this與.new 193
10.4內部類與向上轉型194
10.5在方法和作用域內的內部類195
10.6匿名內部類196
10.6.1再訪工廠方法199
10.7嵌套類201
10.7.1接口內部的類202
10.7.2從多層嵌套類中訪問外部類的
成員203
10.8為什麼需要內部類204
10.8.1閉包與回調205
10.8.2內部類與控制框架207
10.9內部類的繼承212
10.10內部類可以被覆蓋嗎212
10.11局部內部類214
10.12內部類標識符215
10.13總結215
第11章持有對象216
11.1泛型和類型安全的容器216
11.2基本概念219
11.3添加一組元素220
11.4容器的打印221
11.5 List 223
11.6迭代器226
11.6.1 ListIterator 227
11.7 LinkedList 228
11.8 Stack 229
11.9 Set 231
11.10 Map 233
11.11 Queue 236
11.11.1 PriorityQueue 237
11.12 Collection和Iterator 238
11.13 Foreach與迭代器241
11.13.1適配器方法慣用法243
11.14總結248
第12章通過異常處理錯誤248
12.1概念249
12.2基本異常249
12.2.1異常參數250
12.3捕獲異常250
12.3.1 try塊250
12.3.2異常處理程序250
12.4創建自定義異常251
12.4. 1異常與記錄日誌253
12.5異常說明256
12.6捕獲所有異常256
12.6.1棧軌跡257
12.6.2重新拋出異常258
12.6.3異常鏈260
12.7 Java標準異常263
12.7.1特例:RuntimeException 263
12.8使用finally進行清理264
12.8.1 finally用來做什麼265
12.8.2在return中使用finally 267
12.8.3缺憾:異常丟失268
12.9異常的限制269
12.10構造器271
12.11異常匹配275
12.12其他可選方式276
12.12.1歷史277
12.12.2觀點278
12.12.3把異常傳遞給控制台279
12.12.4把“被檢查的異常”轉換為“不受
檢查的異常” 279
12.13異常使用指南281
12.14總結281
第13章字符串283
13.1不可變String 283
13.2重載“+”與StringBuilder 283
13.3無意識的遞歸287
13.4 String上的操作288
13.5格式化輸出289
13.5.1 printf() 289
13.5.2 System.out.format () 289
13.5.3 Formatter類290
13.5.4格式化說明符291
13.5.5 Formatter轉換292
13.5.6 String.format() 294
13.6正則表達式295
13.6.1基礎295
13.6.2創建正則表達式297
13.6.3量詞299
13.6.4 Pattern和Matcher 300
13.6.5 split() 305
13.6.6替換操作306
13.6.7 reset() 307
13.6.8正則表達式與Java I/O 307
13.7掃描輸入309
13.7.1 Scanner定界符310
13.7.2用正則表達式掃描311
13.8 StringTokenizer 312
13.9總結312
第14章類型信息313
14.1為什麼需要RTTI 313
14.2 Class對象314
14.2.1類字面常量318
14.2.2泛化的Class引用320
14.2.3新的轉型語法322
14.3類型轉換前先做檢查322
14.3.1使用類字面常量327
14.3.2動態的instanceof 329
14.3.3遞歸計數330
14.4註冊工廠331
14.5 instanceof與Class的等價性333
14.6反射:運行時的類信息334
14.6.1類方法提取器335
14.7動態代理337
14.8空對象341
14.8.1模擬對象與樁346
14.9接口與類型信息346
14.10總結350
第15章泛型352
15.1與C++的比較352
15.2簡單泛型353
15.2.1一個元組類庫354
15.2.2一個堆棧類356
15.2.3 RandomList 357
15.3泛型接口358
15.4泛型方法361
15.4.1槓桿利用類型參數推斷362
15.4.2可變參數與泛型方法363
15.4.3用於Generator的泛型方法364
15.4.4一個通用的Generator 364
15.4.5簡化元組的使用366
15.4.6一個Set實用工具367
15.5匿名內部類369
15.6構建複雜模型371
15.7擦除的神秘之處372
15.7.1 C++的方式373
15.7.2遷移兼容性375
15.7.3擦除的問題376
15.7.4邊界處的動作377
15.8擦除的補償380
15.8.1創建類型實例381
15.8.2泛型數組383
15.9邊界386
15.10通配符389
15.10.1編譯器有多聰明391
15.10.2逆變393
15.10.3無界通配符395
15.10.4捕獲轉換399
15.11問題400
15.11.1任何基本類型都不能作為類型
參數400
15.11.2實現參數化接口401
15.11.3轉型和警告402
15.11.4重載403
15.11.5基類劫持了接口404
15.12自限定的類型404
15.12.1古怪的循環泛型404
15.12.2自限定405
15.12.3參數協變407
15.13動態類型安全409
15.14異常410
15.15混型412
15.15.1 C++中的混型412
15.15.2與接口混合413
15.15.3使用裝飾器模式414
15.15 .4與動態代理混合415
15.16潛在類型機制416
15.17對缺乏潛在類型機制的補償420
15.17.1反射420
15.17.2將一個方法應用於序列421
15.17.3當你並未碰巧擁有正確的接口時423
15.17.4用適配器仿真潛在類型機制424
15.18將函數對像用作策略426
15.19總結:轉型真的如此之糟嗎?430
15.19.1進階讀物432
第16章數組433
16.1數組為什麼特殊433
16.2數組是第一級對象434
16.3返回一個數組436
16.4多維數組437
16.5數組與泛型440
16.6創建測試數據442
16.6.1 Arrays .fill() 442
16.6.2數據生成器443
16.6.3從Generator中創建數組447
16.7 Arrays實用功能450
16.7.1複製數組450
16.7.2數組的比較451
16.7.3數組元素的比較452
16.7.4數組排序454
16.7.5在已排序的數組中查找455
16.8總結457
第17章容器深入研究459
17.1完整的容器分類法459
17.2填充容器460
17.2.1一種Generator解決方案460
17.2.2 Map生成器462
17.2.3使用Abstract類464
17.3 Collection的功能方法470
17.4可選操作472
17.4.1未獲支持的操作473
17.5 List的功能方法474
17.6 Set和存儲順序477
17.6.1 SortedSet 479
17.7隊列480
17.7.1優先級隊列481
17.7.2雙向隊列482
17.8理解Map 483
17.8.1性能484
17.8.2 SortedMap 486
17.8.3 LinkedHashMap 487
17.9散列與散列碼488
17.9.1理解hashCode() 490
17.9.2為速度而散列492
17.9.3覆蓋hashCode() 495
17.10選擇接口的不同實現499
17.10.1性能測試框架499
17.10.2對List的選擇502
17.10.3微基準測試的危險507
17.10.4對Set的選擇508
17.10.5對Map的選擇509
17.11實用方法512
17.11.1 List的排序和查詢514
17.11.2設定Collection或Map為不可
修改515
17.11.3 Collection或Map的同步控制516
17.12持有引用518
17.12.1 WeakHashMap 519
17.13 Java 1.0/1.1的容器520
17.13.1 Vector和Enumeration 520
17.13.2 Hashtable 521
17.13.3 Stack 521
17.13.4 BitSet 522
17.14總結524
第18章Java I/O系統525
18.1 File類525
18.1.1目錄列表器525
18.1.2目錄實用工具528
18.1.3目錄的檢查及創建532
18.2輸入和輸出533
18.2.1 InputStream類型534
18.2.2 OutputStream類型535
18.3添加屬性和有用的接口535
18.3.1通過FilterInputStream從InputStream
讀取數據535
18.3.2通過FilterOutPutStream向Output-
Stream寫入536
18.4 Reader和Writer 537
18.4.1數據的來源和去處537
18.4.2更改流的行為538
18.4.3未發生變化的類539
18.5自我獨立的類:RandomAccessFile 539
18.6 I/O流的典型使用方式539
18.6.1緩衝輸入文件540
18.6.2從內存輸入540
18.6.3格式化的內存輸入541
18.6.4基本的文件輸出542
18.6.5存儲和恢復數據543
18.6.6讀寫隨機訪問文件544
18.6.7管道流545
18.7文件讀寫的實用工具545
18.7.1讀取二進製文件548
18.8標準I /O 548
18.8.1從標準輸入中讀取548
18.8.2將System.out轉換成PrintWriter 549
18.8.3標準I/O重定向549
18.9進程控制550
18.10新I/O 551
18.10.1轉換數據554
18.10.2獲取基本類型556
18.10.3視圖緩衝器557
18.10.4用緩衝器操縱數據560
18.10.5緩衝器的細節560
18.10.6內存映射文件563
18.10.7文件加鎖566
18.11壓縮568
18.11. 1用GZIP進行簡單壓縮568
18.11.2用Zip進行多文件保存569
18.11.3 Java檔案文件570
18.12對象序列化571
18.12.1尋找類574
18.12.2序列化的控制575
18.12.3使用“持久性” 581
18.13 XML 586
18.14 Preferences 588
18.15總結589
第19章枚舉類型590
19.1基本enum特性590
19.1.1將靜態導入用於enum 591
19.2向enum中添加新方法591
19.2.1覆蓋enum的方法592
19.3 switch語句中的enum 593
19.4 values( )的神秘之處594
19.5實現,而非繼承596
19.6隨機選取596
19.7使用接口組織枚舉597
19.8使用EnumSet替代標誌600
19.9使用EnumMap 602
19.10常量相關的方法603
19.10.1使用enum的職責鏈606
19.10 .2使用enum的狀態機609
19.11多路分發613
19.11.1使用enum分發615
19.11.2使用常量相關的方法616
19.11.3使用EnumMap分發618
19.11.4使用二維數組618
19.12總結619
第20章註解620
20.1基本語法620
20.1.1定義註解621
20.1.2元註解622
20.2編寫註解處理器622
20.2.1註解元素623
20.2.2默認值限制624
20.2.3生成外部文件624
20.2.4註解不支持繼承627
20.2.5實現處理器627
20.3使用apt處理註解629
20.4將觀察者模式用於apt 632
20.5基於註解的單元測試634
20.5.1將@Unit用於泛型641
20.5.2不需要任何“套件” 642
20.5.3實現@Unit 642
20.5.4移除測試代碼647
20.6總結649
第21章並發650
21.1並發的多面性651
21.1.1更快的執行651
21.1.2改進代碼設計653
21.2基本的線程機制653
21.2.1定義任務654
21.2.2 Thread類655
21.2.3使用Executor 656
21.2.4從任務中產生返回值658
21.2.5休眠659
21.2.6優先級660
21.2.7讓步661
21.2.8後台線程662
21.2.9編碼的變體665
21.2.10術語669
21.2.11加入一個線程669
21.2.12創建有響應的用戶界面671
21.2.13線程組672
21.2.14捕獲異常672
21.3共享受限資源674
21.3.1不正確地訪問資源674
21.3.2解決共享資源競爭676
21.3.3原子性與易變性680
21.3.4原子類684
21.3.5臨界區685
21.3.6在其他對像上同步689
21.3.7線程本地存儲690
21.4終結任務691
21.4.1裝飾性花園691
21.4.2在阻塞時終結694
21.4.3中斷695
21.4.4檢查中斷701
21.5線程之間的協作702
21.5.1 wait()與notifyAll() 703
21.5.2 notify()與notifyAll() 707
21.5.3生產者與消費者709
21.5.4生產者-消費者與隊列713
21.5.5任務間使用管道進行輸入/輸出717
21.6死鎖718
21.7新類庫中的構件722
21.7.1 CountDownLatch 722
21.7.2 CyclicBarrier 724
21.7.3 DelayQueue 726
21.7.4 PriorityBlockingQueue 728
21.7.5使用ScheduledExecutor的溫室控
制器730
21.7.6 Semaphore 733
21.7.7 Exchanger 735
21.8仿真737
21.8.1銀行出納員仿真737
21.8.2飯店仿真741
21.8.3分發工作744
21.9性能調優748
21.9.1比較各類互斥技術748
21.9.2免鎖容器754
21.9.3樂觀加鎖760
21.9.4 ReadWriteLock 761
21.10活動對象763
21.11總結766
21.12進階讀物767
第22章圖形化用戶界面768
22.1 applet 769
22.2 Swing基礎769
22.2.1一個顯示框架771
22.3創建按鈕772
22.4捕獲事件773
22.5文本區域774
22.6控制佈局776
22.6.1 BorderLayout 776
22.6.2 FlowLayout 776
22.6.3 GridLayout 777
22.6.4 GridBagLayout 777
22.6.5絕對定位778
22.6 .6 BoxLayout 778
22.6.7最好的方式是什麼778
22.7 Swing事件模型778
22.7.1事件與監聽器的類型779
22.7.2跟踪多個事件783
22.8 Swing組件一覽785
22.8.1按鈕785
22.8.2圖標787
22.8.3工具提示788
22.8.4文本域789
22.8.5邊框790
22.8.6一個迷你編輯器791
22.8.7複選框792
22.8.8單選按鈕793
22.8.9組合框793
22.8.10列錶框794
22.8.11頁簽面板796
22.8.12消息框796
22.8.13菜單798
22.8.14彈出式菜單802
22.8.15繪圖803
22.8.16對話框805
22.8.17文件對話框808
22.8.18 Swing組件上的HTML 809
22.8.19滑塊與進度條810
22.8.20選擇外觀811
22.8 .21樹、表格和剪貼板812
22.9 JNLP與Java Web Start 812
22.10 Swing與並發816
22.10.1長期運行的任務816
22.10.2可視化線程機制822
22.11可視化編程與JavaBean 823
22.11.1 JavaBean是什麼824
22.11 .2使用Introspector抽取出BeanInfo 825
22.11.3一個更複雜的Bean 829
22.11.4 JavaBean與同步831
22.11.5把Bean打包834
22.11.6對Bean更高級的支持835
22.11.7有關Bean的其他讀物836
22.12 Swing的可替代選擇836
22.13用Flex構建Flash Web客戶端836
22.13.1 Hello, Flex 837
22.13.2編譯MXML 838
22.13.3 MXML與ActionScript 838
22.13.4容器與控制839
22.13.5效果與樣式840
22.13.6事件841
22.13.7連接到Java 841
22.13.8數據模型與數據綁定843
22.13.9構建和部署843
22.14創建SWT應用844
22.14.1安裝SWT 845
22.14.2 Hello, SWT 845
22.14.3根除冗餘代碼847
22.14.4菜單848
22.14.5頁簽面板、按鈕和事件849
22.14.6圖形852
22.14.7 SWT中的並發853
22.14.8 SWT還是Swing 855
22.15總結855
22.15.1資源855
附錄A補充材料856
附錄B資源859
索引863