瘋狂Java程式設計師的基本修養

瘋狂Java程式設計師的基本修養

《瘋狂Java程式設計師的基本修養》是2013年電子工業出版社出版的圖書,作者是李剛。本書把Java編程中的重點、要點、難點、常見陷阱收集在一起,旨在幫助讀者重點突破這些看似“司空見慣”的基本功。

基本介紹

  • 作者:李剛
  • ISBN:9787121192326
  • 頁數:484
  • 定價:59.00元
  • 出版社:電子工業出版社
  • 出版時間:2013-1
內容介紹,作者介紹,作品目錄,

內容介紹

《瘋狂Java程式設計師的基本修養》知識主要分為四個部分,第一部分主要介紹Java程式的記憶體管理,這部分是大多Java程式設計師最容易忽略的地方——因為Java不像C,而且Java提供了垃圾回收機制,因此導致許多Java程式設計師對記憶體管理重視不夠;第二部分主要介紹了Java編程過程中各種常見的陷阱,這些陷阱有些來自於李剛老師早年痛苦的經歷,有些來自於他的眾多學子的痛苦經歷,都是Java程式設計師在編程過程中的“前車之鑑”,希望讀者能引以為戒;第三部分主要介紹常用數據結構的Java實現,這部分內容也是大多Java程式設計師重視不夠的地方——因為許多初級程式設計師往往會感覺:數據結構對實際開發幫助並不大,但實際上,我們每天開發都會使用數據結構,只是經常利用別人的實現而已;第四部分主要介紹Java程式開發的方法、經驗等,它們是李剛老師多年的實際開發經驗、培訓經驗的總結,更符合初學者的習慣,更能滿足初學者的需要,因此掌握這些開發方法、經驗可以更有效地進行開發。
本書提供了配套的網站:http://www.crazyit.org,讀者在閱讀該書過程中遇到任何技術問題都可登錄該站點與李剛老師交流,也可與瘋狂Java圖書龐大的讀者群交流。
本書不是一本包含所有技術細節的手冊,而是承載了無數過來人的諄諄教導,書中內容為有一定的Java基礎的讀者而編寫,尤其適合於有一到兩年的Java學習經驗的讀者和參加工作不久的初級Java程式設計師,幫助他們突破技術基本功的瓶頸。

作者介紹

李剛,從事10多年的Java EE套用開發,現任瘋狂軟體教育中心教學總監。
瘋狂Java實訓營創始人,瘋狂Java體系圖書作者。曾任LITEON公司的J2EE技術主管,負責該公司的企業信息化平台的架構設計。
曾任廣州電信、廣東龍泉科技等公司的技術培訓導師。曾兼任廣東技術師範學院計算機科學系的兼職副教授。
2007年3月26日的《電腦報》專訪人物。
培訓的學生已在華為、立信、普信、網易、電信盈科等公司就職。
國內著名的高端IT技術作家,已出版《瘋狂Java講義》、《瘋狂Android講義》、《輕量級Java EE企業套用實戰》、《瘋狂Ajax講義》、《瘋狂XML講義》、《經典Java EE企業套用實戰》、《Struts 2.1權威指南》、《Ruby On Rails敏捷開發最佳實踐》等著作。其中瘋狂Java體系圖書都是已經得到廣泛的市場認同,並多次重印的暢銷圖書,並被多家高校選作教材,部分圖書已被翻譯成繁體中文版、輸出到台灣地區。

作品目錄

第1章 數組及其記憶體管理 1
1.1 數組初始化 2
1.1.1 Java數組是靜態的 2
1.1.2 數組一定要初始化嗎 5
1.1.3 基本類型數組的初始化 7
1.1.4 引用類型數組的初始化 9
1.2 使用數組 12
1.2.1 數組元素就是變數 12
1.2.2 沒有多維數組 14
1.3 本章小結 20
第2章 對象及其記憶體管理 21
2.1 實例變數和類變數 22
2.1.1 實例變數和類變數的屬性 23
2.1.2 實例變數的初始化時機 26
2.1.3 類變數的初始化時機 30
2.2 父類構造器 32
2.2.1 隱式調用和顯式調用 32
2.2.2 訪問子類對象的實例變數 34
2.2.3 調用被子類重寫的方法 37
2.3 父子實例的記憶體控制 39
2.3.1 繼承成員變數和繼承方法的區別 39
2.3.2 記憶體中子類實例 42
2.3.3 父、子類的類變數 47
2.4 final修飾符 48
2.4.1 final修飾的變數 48
2.4.2 執行“宏替換”的變數 53
2.4.3 final方法不能被重寫 57
2.4.4 內部類中的局部變數 59
2.5 本章小結 62
第3章 常見Java集合的實現細節 63
3.1 Set和Map 64
3.1.1 Set和Map的關係 64
3.1.2 HashMap和HashSet 69
3.1.3 TreeMap和TreeSet 79
3.2 Map和List 85
3.2.1 Map的values()方法 85
3.2.2 Map和List的關係 91
3.3 ArrayList和LinkedList 92
3.3.1 Vector和ArrayList的區別 94
3.3.2 ArrayList和LinkedList的實現差異 97
3.3.3 ArrayList和LinkedList的性能分析及適用場景 101
3.4 Iterator疊代器 101
3.4.1 Iterator實現類與疊代器模式 102
3.4.2 疊代時刪除指定元素 103
3.5 本章小結 106
第4章 Java的記憶體回收 107
4.1 Java引用的種類 108
4.1.1 對象在記憶體中的狀態 108
4.1.2 強引用 111
4.1.3 軟引用 111
4.1.4 弱引用 114
4.1.5 虛引用 118
4.2 Java的記憶體泄漏 119
4.3 垃圾回收機制 123
4.3.1 垃圾回收的基本算法 123
4.3.2 堆記憶體的分代回收 125
4.3.3 與垃圾回收相關的附加選項 127
4.3.4 常見的垃圾回收器 127
4.4 記憶體管理小技巧 131
4.4.1 儘量使用直接量 132
4.4.2 使用StringBuilder和StringBuffer進行字元串連線 132
4.4.3 儘早釋放無用對象的引用 132
4.4.4 儘量少用靜態變數 133
4.4.5 避免在經常調用的方法、循環中創建Java對象 133
4.4.6 快取經常使用的對象 134
4.4.7 儘量不要使用finalize方法 134
4.4.8 考慮使用SoftReference 135
4.5 本章小結 135
第5章 表達式中的陷阱 136
5.1 關於字元串的陷阱 137
5.1.1 JVM對字元串的處理 137
5.1.2 不可變的字元串 140
5.1.3 字元串比較 142
5.2 表達式類型的陷阱 144
5.2.1 表達式類型的自動提升 144
5.2.2 複合賦值運算符的陷阱 145
5.2.3 Java 7新增的二進制整數 147
5.3 輸入法導致的陷阱 148
5.4 注釋字元必須合法 149
5.5 轉義字元的陷阱 149
5.5.1 慎用字元的Unicode轉義形式 149
5.5.2 中止行注釋的轉義字元 150
5.6 泛型可能引起的錯誤 151
5.6.1 原始類型變數的賦值 151
5.6.2 原始類型帶來的擦除 153
5.6.3 創建泛型數組的陷阱 155
5.7 正則表達式的陷阱 157
5.8 多執行緒的陷阱 158
5.8.1 不要調用run方法 158
5.8.2 靜態的同步方法 160
5.8.3 靜態初始化塊啟動新執行緒執行初始化 162
5.8.4 注意多執行緒執行環境 167
5.9 本章小結 171
第6章 流程控制的陷阱 172
6.1 switch語句陷阱 173
6.1.1 default分支永遠會執行嗎 173
6.1.2 break的重要性 174
6.1.3 Java 7增強的switch表達式 176
6.2 標籤引起的陷阱 177
6.3 if語句的陷阱 178
6.3.1 else隱含的條件 178
6.3.2 小心空語句 181
6.4 循環體的花括弧 182
6.4.1 什麼時候可以省略花括弧 182
6.4.2 省略花括弧的危險 183
6.5 for循環的陷阱 185
6.5.1 分號惹的禍 185
6.5.2 小心循環計數器的值 188
6.5.3 浮點數作循環計數器 188
6.6 foreach循環的循環計數器 190
6.7 本章小結 192
第7章 面向對象的陷阱 193
7.1 instanceof運算符的陷阱 194
7.2 構造器的陷阱 198
7.2.1 構造器之前的void 198
7.2.2 構造器創建對象嗎 199
7.2.3 無限遞歸的構造器 203
7.3 持有當前類的實例 205
7.4 到底調用哪個重載的方法 206
7.5 方法重寫的陷阱 209
7.5.1 重寫private方法 209
7.5.2 重寫其他訪問許可權的方法 210
7.6 非靜態內部類的陷阱 211
7.6.1 非靜態內部類的構造器 211
7.6.2 非靜態內部類不能擁有靜態成員 213
7.6.3 非靜態內部類的子類 214
7.7 static關鍵字 215
7.7.1 靜態方法屬於類 215
7.7.2 靜態內部類的限制 217
7.8 native方法的陷阱 217
7.9 本章小結 219
第8章 異常處理的陷阱 220
8.1 正確關閉資源的方式 221
8.1.1 傳統關閉資源的方式 221
8.1.2 使用Java 7增強的try語句關閉資源 224
8.2 finally塊的陷阱 226
8.2.1 finally的執行規則 226
8.2.2 finally塊和方法返回值 227
8.3 catch塊的用法 229
8.3.1 catch塊的順序 229
8.3.2 不要用catch代替流程控制 231
8.3.3 只有catch可能拋出的異常 232
8.3.4 做點實際的修復 235
8.4 繼承得到的異常 237
8.5 Java 7增強的throw語句 238
8.6 本章小結 240
第9章 線性表 241
9.1 線性表概述 242
9.1.1 線性表的定義及邏輯結構 242
9.1.2 線性表的基本操作 243
9.2 順序存儲結構 243
9.3 鏈式存儲結構 248
9.3.1 單鍊表上的基本運算 249
9.3.2 循環鍊表 255
9.3.3 雙向鍊表 256
9.4 線性表的分析 262
9.4.1 線性表的實現分析 262
9.4.2 線性表的功能 263
9.5 本章小結 264
第10章 棧和佇列 265
10.1 棧 266
10.1.1 棧的基本定義 266
10.1.2 棧的常用操作 267
10.1.3 棧的順序存儲結構及實現 267
10.1.4 棧的鏈式存儲結構及實現 272
10.1.5 Java集合中的棧 275
10.2 佇列 275
10.2.1 佇列的基本定義 275
10.2.2 佇列的常用操作 276
10.2.3 佇列的順序存儲結構及實現 276
10.2.4 循環佇列 280
10.2.5 佇列的鏈式存儲結構及實現 284
10.2.6 Java集合中的佇列 287
10.3 雙端佇列 288
10.4 本章小結 289
第11章 樹和二叉樹 290
11.1 樹的概述 291
11.1.1 樹的定義和基本術語 291
11.1.2 樹的基本操作 292
11.1.3 父節點表示法 293
11.1.4 子節點鍊表示法 296
11.2 二叉樹 301
11.2.1 二叉樹的定義和基本概念 301
11.2.2 二叉樹的基本操作 302
11.2.3 二叉樹的順序存儲 303
11.2.4 二叉樹的二叉鍊表存儲 306
11.2.5 二叉樹的三叉鍊表存儲 310
11.3 遍歷二叉樹 313
11.3.1 先序遍歷 314
11.3.2 中序遍歷 314
11.3.3 後序遍歷 315
11.3.4 廣度優先(按層)遍歷 316
11.4 轉換方法 316
11.4.1 森林、樹和二叉樹的轉換 317
11.4.2 樹的鍊表存儲 318
11.5 哈夫曼樹 318
11.5.1 哈夫曼樹的定義和基本概念 319
11.5.2 創建哈夫曼樹 319
11.5.3 哈夫曼編碼 322
11.6 排序二叉樹 323
11.7 紅黑樹 331
11.7.1 插入操作 332
11.7.2 刪除操作 335
11.8 本章小結 344
第12章 常用的內部排序 345
12.1 排序的基本概念 346
12.1.1 排序概述 346
12.1.2 內部排序的分類 347
12.2 選擇排序法 347
12.2.1 直接選擇排序 347
12.2.2 堆排序 351
12.3 交換排序 356
12.3.1 冒泡排序 356
12.3.2 快速排序 358
12.4 插入排序 360
12.4.1 直接插入排序 360
12.4.2 折半插入排序 362
12.4.3 Shell排序 364
12.5 歸併排序 367
12.6 桶式排序 370
12.7 基數排序 372
12.8 本章小結 375
第13章 程式開發經驗談 376
13.1 紮實的基本功 377
13.1.1 快速的輸入能力 377
13.1.2 編程實現能力 379
13.1.3 快速排錯 379
13.2 程式開發之前 380
13.2.1 分析軟體的組件模型 380
13.2.2 建立軟體的數據模型 383
13.3 理清程式的實現流程 384
13.3.1 各組件如何通信 384
13.3.2 人機互動的實現 386
13.3.3 複雜算法的分析 388
13.4 編寫開發文檔 391
13.4.1 繪製建模圖、流程圖 391
13.4.2 提供簡要說明 393
13.4.3 編寫偽碼實現 393
13.5 編碼實現和開發心態 394
13.5.1 開發是複雜的 394
13.5.2 開發過程是漫長的 394
13.6 本章小結 395
第14章 程式調試經驗談 396
14.1 程式的可調試性 397
14.1.1 增加注釋 397
14.1.2 使用log 397
14.2 程式調試的基本方法 405
14.2.1 藉助編譯器的代碼審查 405
14.2.2 跟蹤程式執行流程 408
14.2.3 斷點調試 409
14.2.4 隔離調試 411
14.2.5 錯誤重現 412
14.3 記錄常見錯誤 414
14.3.1 常見異常可能的錯誤原因 414
14.3.2 常見運行時異常可能的錯誤原因 416
14.4 程式調試的整體思路 417
14.4.1 分段調試 418
14.4.2 分模組調試 419
14.5 調試心態 419
14.5.1 誰都會出錯 420
14.5.2 調試比寫程式更費時 420
14.6 本章小結 420
第15章 IDE工具心法談 421
15.1 何時開始利用IDE工具 422
15.2 IDE工具概述 423
15.2.1 IDE工具的基本功能 424
15.2.2 常見的Java IDE工具 425
15.3 項目管理 428
15.3.1 建立項目 428
15.3.2 自動編譯 434
15.3.3 自動部署、運行 435
15.4 代碼管理 436
15.4.1 嚮導式的代碼生成 436
15.4.2 代碼生成器 438
15.4.3 代碼提示 439
15.4.4 自動代碼補齊 441
15.4.5 實時錯誤提示 441
15.5 項目調試 442
15.5.1 設定斷點 442
15.5.2 單步調試 444
15.5.3 步入、步出 445
15.6 團隊協作功能 446
15.7 本章小結 450
第16章 軟體測試經驗談 451
16.1 軟體測試概述 452
16.1.1 軟體測試的概念和目的 452
16.1.2 軟體測試的分類 454
16.1.3 開發活動和測試活動 454
16.1.4 常見的Bug管理工具 455
16.2 單元測試 456
16.2.1 單元測試概述 456
16.2.2 單元測試的邏輯覆蓋 458
16.2.3 JUnit介紹 461
16.2.4 JUnit的用法 461
16.3 系統測試和自動化測試 467
16.3.1 系統測試概述 467
16.3.2 自動化測試 468
16.3.3 常見的自動化測試工具 469
16.4 性能測試 470
16.4.1 性能測試概述 470
16.4.2 性能測試的相關概念 471
16.4.3 常見的性能測試工具 472
16.5 本章小結 472

相關詞條

熱門詞條

聯絡我們