瘋狂Java:突破程式員基本功的16課

來源:互聯網
上載者:User

瘋狂Java:突破程式員基本功的16課

基本資料

作者: 李剛   
出版社:人民郵電出版社
ISBN:9787115221681
上架時間:2010-4-19
出版日期:2010 年5月
開本:16開
其他詳細資料查看:http://www.china-pub.com/196647

內容簡介

本書是著名Java領域研究專家、Java語言培訓大師、“瘋狂Java”創始人李剛老師的又一傾心力作。
在本書中,李剛老師一改枯燥的教學方式,專門面向Java初學者可能會遇到的各種學習問題,由點及面,詳細討論了Java記憶體管理、Java編程過程中常遇陷阱、常用資料結構的Java實現和Java程式開發的方法與經驗等內容。
這些問題,看似“司空見慣”,實際上卻是很多Java初學者在初學階段都會遇到的問題和疑難。李剛老師在本書中,正是試圖為讀者們展現出這些疑點、痛點的實質,讓讀者能在瞬息之間,徹底掌握住這門語言的“內功心法”。
這不是一本包容了所有技術細節的手冊,而是一本Java前輩對於晚輩們的提點和教導。書中很多內容,是李剛老師和他的眾多學子曾親身體驗過的桎梏,非常具有參考意義。本書承載了無數前輩的諄諄教導之言,向你展示著一個痛並快樂著的Java世界。

 

目錄

第1課 數組與記憶體控制 1
1.1 數組初始化 2
1.1.1 Java數組是靜態 2
1.1.2 數組一定要初始化嗎 5
1.1.3 基本類型數組的初始化 6
1.1.4 參考型別數組的初始化 8
1.2 使用數組 11
1.2.1 數組元素就是變數 11
1.2.2 沒有多維陣列 13
1.3 小結 18
第2課 對象與記憶體控制 19
2.1 執行個體變數和類變數 20
2.1.1 執行個體變數和類變數的屬性 21
2.1.2 執行個體變數的初始化時機 24
2.1.3 類變數的初始化時機 27
2.2 父類構造器 29
2.2.1 隱式調用和顯式調用 29
2.2.2 訪問子類對象的執行個體變數 32
2.2.3 調用被子類重寫的方法 34
2.3 父子執行個體的記憶體控制 36

.2.3.1 繼承成員變數和繼承方法的區別 36
2.3.2 記憶體中子類執行個體 39
2.3.3 父、子類的類變數 43
2.4 final修飾符 44
2.4.1 final修飾的變數 44
2.4.2 執行“宏替換”的變數 49
2.4.3 final方法不能被重寫 53
2.4.4 內部類中的局部變數 55
2.5 小結 58
第3課 常見Java集合的實現細節 59
3.1 Set和Map 60
3.1.1 Set和Map的關係 60
3.1.2 HashMap和HashSet 65
3.1.3 TreeMap和TreeSet 75
3.2 Map和List 80
3.2.1 Map的values()方法 81
3.2.2 Map和List的關係 87
3.3 ArrayList和LinkedList 88
3.3.1 Vector和ArrayList的區別 89
3.3.2 ArrayList和LinkedList的實現差異 92
3.3.3 ArrayList和LinkedList的效能分析和適用情境 96
3.4 Iterator迭代器 96
3.5 小結 100
第4課 Java的記憶體回收 101
4.1 Java引用的種類 102
4.1.1 對象在記憶體中狀態 102
4.1.2 強引用 105
4.1.3 軟引用 105
4.1.4 弱引用 108
4.1.5 虛引用 111
4.2 Java的記憶體流失 112
4.3 記憶體回收機制 116
4.3.1 記憶體回收的基本演算法 116
4.3.2 堆記憶體的分代回收 118
4.3.3 與記憶體回收的附加選項 119
4.3.4 常見記憶體回收行程 120
4.4 記憶體管理的小技巧 123
4.4.1 盡量使用直接量 123
4.4.2 使用StringBuilder和StringBuffer進行字串串連 123
4.4.3 儘早釋放無用對象的引用 124
4.4.4 盡量少用靜態變數 124
4.4.5 避免在經常調用的方法、迴圈中建立Java對象 125
4.4.6 緩衝經常使用的對象 125
4.4.7 盡量不要使用finalize方法 126
4.4.8 考慮使用SoftReference 126
4.5 小結 126
第5課 運算式中的陷阱 127
5.1 關於字串的陷阱 128
5.1.1 JVM對字串的處理 128
5.1.2 不可變的字串 131
5.1.3 字串比較 133
5.2 運算式類型的陷阱 135
5.2.1 運算式類型的自動提升 135
5.2.2 複合賦值運算子的陷阱 136
5.3 IME導致的陷阱 138
5.4 注釋的字元必須合法 138
5.5 逸出字元的陷阱 139
5.5.1 慎用字元的Unicode轉義形式 139
5.5.2 中止行注釋的逸出字元 140
5.6 泛型可能引起的錯誤 141
5.6.1 原始類型變數的賦值 141
5.6.2 原始類型帶來的擦除 143
5.6.3 建立泛型數組的陷阱 145
5.7 Regex的陷阱 147
5.8 多線程的陷阱 148
5.8.1 不要調用run方法 148
5.8.2 靜態同步方法 150
5.8.3 靜態初始化塊啟動新線程執行初始化 152
5.8.4 注意多線程執行環境 157
5.9 小結 161
第6課 流程式控制制的陷阱 163
6.1 switch語句陷阱 164
6.1.1 default分支永遠會執行嗎 164
6.1.2 break的重要性 165
6.1.3 switch運算式的類型 167
6.2 標籤引起的陷阱 168
6.3 if語句的陷阱 169
6.3.1 else隱含的條件 169
6.3.2 小心空語句 171
6.4 迴圈體的花括弧 173
6.4.1 什麼時候可以省略花括弧 173
6.4.2 省略花括弧的危險 174
6.5 for迴圈的陷阱 175
6.5.1 分號惹的禍 175
6.5.2 小心迴圈計數器的值 178
6.5.3 浮點數作迴圈計數器 179
6.6 foreach迴圈的迴圈計數器 181
6.7 小結 182
第7課 物件導向的陷阱 183
7.1 instanceof運算子的陷阱 184
7.2 構造器的陷阱 188
7.2.1 構造器之前的void 188
7.2.2 構造器建立對象嗎 189
7.2.3 無限遞迴的構造器 194
7.3 持有當前類的執行個體 195
7.4 到底調用哪個重載的方法 196
7.5 方法重寫的陷阱 199
7.5.1 重寫private方法 199
7.5.2 重寫其他存取權限的方法 200
7.6 非靜態內部類的陷阱 201
7.6.1 非靜態內部類的構造器 201
7.6.2 非靜態內部類不能擁有靜態成員 203
7.6.3 非靜態內部類的子類 204
7.7 static關鍵字 206
7.7.1 靜態方法屬於類 206
7.7.2 靜態內部類的限制 207
7.8 native方法的陷阱 208
7.9 小結 209
第8課 異常捕捉的陷阱 211
8.1 正確關閉資源的方式 212
8.2 finally塊的陷阱 215
8.2.1 finally的執行規則 215
8.2.2 finally塊和方法傳回值 217
8.3 catch塊的用法 219
8.3.1 catch塊的順序 219
8.3.2 不要用catch代替流程式控制制 221
8.3.3 只能catch可能拋出的異常 221
8.3.4 實際的修複 225
8.4 繼承得到的異常 227
8.5 小結 228
第9課 線性表 229
9.1 線性表概述 230
9.1.1 線性表的定義及邏輯結構 230
9.1.2 線性表的基本操作 231
9.2 順序儲存結構 231
9.3 鏈式儲存結構 236
9.3.1 單鏈表上的基本運算 237
9.3.2 迴圈鏈表 243
9.3.3 雙向鏈表 244
9.4 線性表的分析 251
9.4.1 線性表的實現分析 251
9.4.2 線性表的功能 251
9.5 小結 252
第10課 棧和隊列 253
10.1 棧 254
10.1.1 棧的基本定義 254
10.1.2 棧的常用操作 254
10.1.3 棧的順序儲存結構及實現 255
10.1.4 棧的鏈式儲存結構及實現 259
10.1.5 Java集合中的棧 263
10.2 隊列 263
10.2.1 隊列的基本定義 263
10.2.2 隊列的常用操作 264
10.2.3 隊列的順序儲存結構及實現 264
10.2.4 迴圈隊列 268
10.2.5 隊列的鏈式儲存結構及實現 272
10.2.6 Java集合中的隊列 275
10.3 雙向隊列 276
10.4 小結 278
第11課 樹和二叉樹 279
11.1 樹的概述 280
11.1.1 樹的定義和基本術語 280
11.1.2 樹的基本操作 281
11.1.3 父節點標記法 282
11.1.4 子節點鏈標記法 286
11.2 二叉樹 290
11.2.1 二叉樹的定義和基本概念 290
11.2.2 二叉樹的基本操作 292
11.2.3 二叉樹的順序儲存 292
11.2.4 二叉樹的二叉鏈表格儲存體 296
11.2.5 二叉樹的三叉鏈表格儲存體 299
11.3 遍曆二叉樹 303
11.3.1 先序遍曆 303
11.3.2 中序遍曆 304
11.3.3 後序遍曆 304
11.3.4 廣度優先(按層)遍曆 305
11.4 森林、樹和二叉樹的轉換 306
11.4.1 森林、樹和二叉樹的轉換 306
11.4.2 樹的鏈表格儲存體 307
11.5 哈夫曼樹 307
11.5.1 哈夫曼樹的定義和基本概念 307
11.5.2 建立哈夫曼樹 308
11.5.3 哈夫曼編碼 311
11.6 排序二叉樹 312
11.7 紅/黑樹狀結構 319
11.7.1 插入操作 321
11.7.2 刪除操作 322
11.8 小結 332
第12課 常用的內部排序 333
12.1 排序的基本概念 334
12.1.1 排序概述 334
12.1.2 內部排序的分類 335
12.2 選擇排序法 335
12.2.1 直接選擇排序 335
12.2.2 堆排序 339
12.3 交換排序 343
12.3.1 冒泡排序 343
12.3.2 快速排序 345
12.4 插入排序 347
12.4.1 直接插入排序 347
12.4.2 折半插入排序 349
12.4.3 Shell排序 351
12.5 歸併排序 353
12.6 桶式排序 357
12.7 基數排序 359
12.8 小結 362
第13課 程式開發 363
13.1 紮實的基本功 364
13.1.1 快速的輸入能力 364
13.1.2 編程實現能力 365
13.1.3 快速排錯 366
13.2 程式開發之前 366
13.2.1 分析軟體的組件模型 366
13.2.2 建立軟體的資料模型 369
13.3 弄清程式的具體實現 370
13.3.1 各組件如何通訊 370
13.3.2 人機互動的實現 372
13.3.3 複雜演算法的分析 374
13.4 編寫開發文檔 377
13.4.1 繪製建模圖、流程圖 377
13.4.2 提供簡要說明 378
13.4.3 編寫偽碼實現 379
13.5 編碼實現和開發心態 379
13.5.1 開發是複雜的 379
13.5.2 開發過程是漫長的 380
13.6 小結 380
第14課 程式調試 381
14.1 程式的可調試性 382
14.1.1 增加註釋 382
14.1.2 使用log 382
14.2 程式調試的基本方法 390
14.2.1 藉助編譯器的代碼審查 390
14.2.2 跟蹤程式執行流程 392
14.2.3 斷點調試 394
14.2.4 隔離調試 395
14.2.5 錯誤重現 397
14.3 記錄常見錯誤 398
14.3.1 常見異常可能的錯誤原因 399
14.3.2 常見運行時異常可能的錯誤原因 400
14.4 程式調試的整體思路 402
14.4.1 分段調試 402
14.4.2 分模組調試 403
14.5 調試心態 403
14.5.1 誰都會出錯 403
14.5.2 調試比寫程式更費時 404
14.6 小結 404
第15課 使用IDE工具 405
15.1 何時開始利用IDE工具 406
15.2 IDE工具概述 407
15.2.1 IDE工具的準系統 407
15.2.2 常見的Java IDE工具 409
15.3 專案管理 412
15.3.1 建立項目 412
15.3.2 自動編譯 416
15.3.3 自動部署、運行 417
15.4 代碼管理 418
15.4.1 嚮導式的代碼產生 418
15.4.2 代碼產生器 420
15.4.3 代碼提示 421
15.4.4 自動代碼補齊 422
15.4.5 即時錯誤提示 422
15.5 項目調試 423
15.5.1 設定斷點 424
15.5.2 單步調試 426
15.5.3 步入、步出 426
15.6 團隊協作功能 427
作為版本控制工具的用戶端 428
15.7 小結 431
第16課 軟體測試 433
16.1 軟體測試概述 434
16.1.1 軟體測試的概念和目的 434
16.1.2 軟體測試的分類 436
16.1.3 開發活動和測試活動 436
16.1.4 常見Bug管理工具 437
16.2 單元測試 438
16.2.1 單元測試概述 438
16.2.2 單元測試的邏輯覆蓋 439
16.2.3 JUnit介紹 442
16.2.4 JUnit的用法 443
16.3 系統測試和自動化測試 448
16.3.1 系統測試概述 448
16.3.2 自動化測試 449
16.3.3 常見自動化測試載入器 450
16.4 效能測試 451
16.4.1 效能測試概述 451
16.4.2 效能測試的相關概念 452
16.4.3 常見效能測試工具 453
16.5 小結 453

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.