Java 語言的開發人群越來越多,大量程式師已經進入或正打算進入Java 程式
設計領域。這當然和Java 語言本身的優秀不無關係,卻也和Java 語言入門簡單有關。一個毫無程式設計基礎的初學者,只要有點資料庫和SQL 的基礎,大概花不到一個月時間就可以學會撰寫JSP 頁面,說不定這樣就可以找到一份Java 程式設計的工作了。如果他肯再多下點功夫,學習一下撰寫Struts Action 類、設定Action,撰寫SpringBean 類和設定Bean,他甚至可以自我感覺很不錯了。
問題是:這種“速食式”、“突擊式”的程式師真的能滿足要求嗎?
偶然間筆者突發奇想:把這些容易被Java 程式師所忽視的內容整理成一本書,也許可以幫助大多數需要突破基本功的準程式師、初級程式師。本書的每一關鍵皆圍繞一個相對獨立的專題進行講解,形式上有點類似於“針對性地補課”。當讀者感覺自己在某些方面的基本功不夠扎實時,可以直接選擇相應的內容進行學習,完全無須從頭到尾地按順序閱讀。
這是一本無所不包的解惑之書,將Java 學習、實際開發中最容易被大家忽視、又非常重要的內容集結。
如果你是一名Java 語言的初學者,並已經學會Java 基本的語法,但卻經常在程式設計時感到困難重重;或者你已經是一個Java 程式師,但在實際開發中卻經常感覺力不從心,那麼本書將非常適合你。本書會幫助你找出自己的技術缺失,迅速突破Java 程式設計的基本功,使你成為一名真正的Java 達人。
目錄
第1課 陣列與記憶體控制
1.1 陣列初始化
1.1.1 Java 陣列是靜態的
1.1.2 陣列一定要初始化嗎
1.1.3 基本類型陣列的初始化
1.1.4 參考類型陣列的初始化
1.2 使用陣列
1.2.1 陣列元素就是變數
1.2.2 沒有多維陣列
1.3 小結
第2課 物件與記憶體控制
2.1 執行個體變數和類別變數
2.1.1 執行個體變數和類別變數的屬性
2.1.2 執行個體變數的初始化時機
2.1.3 類別變數的初始化時機
2.2 父類別建構元
2.2.1 隱式呼叫和顯式呼叫
2.2.2 存取子類別物件的執行個體變數
2.2.3 呼叫被子類別重新定義的方法
2.3 父子實體的記憶體控制
2.3.1 繼承成員變數和繼承方法的區別
2.3.2 記憶體中子類別實例
2.3.3 父、子類別的類別變數
2.4 final 修飾子
2.4.1 final 修飾的變數
2.4.2 執行“巨集替換”的變數
2.4.3 final 方法不能被重新定義
2.4.4 內部類別中的區域變數
2.5 小結
第3課 常見Java集合的實現細節
3.1 Set 和Map
3.1.1 Set 和Map 的關係
3.1.2 HashMap 和HashSet
3.1.3 TreeMap 和TreeSet
3.2 Map 和List
3.2.1 Map 的values() 方法
3.2.2 Map 和List 的關係
3.3 ArrayList 和LinkedList
3.3.1 Vector 和ArrayList 的區別
3.3.2 ArrayList 和LinkedList 的實現差異
3.3.3 ArrayList 和LinkedList 的性能分析和適用場景
3.4 Iterator 反覆運算器
3.5 小結
第4課 Java的記憶體回收
4.1 Java 參考的種類
4.1.1 物件在記憶體中狀態
4.1.2 強參考
4.1.3 軟參考
4.1.4 弱參考
4.1.5 虛參考
4.2 Java 的記憶體洩漏
4.3 垃圾回收機制
4.3.1 垃圾回收的基本演算法
4.3.2 堆積記憶體的分代回收
4.3.3 與垃圾回收的附加選項
4.3.4 常見垃圾回收器
4.4 記憶體管理的小技巧
4.4.1 儘量使用直接量
4.4.2 使用StringBuilder 和StringBuffer 進行字串連接
4.4.3 儘早釋放無用物件的參考
4.4.4 儘量少用靜態變數
4.4.5 避免在經常呼叫的方法、迴圈中建立Java 物件
4.4.6 快取記憶體經常使用的物件
4.4.7 儘量不要使用finalize 方法
4.4.8 考慮使用SoftReference
4.5 小結
第5課 運算式中的陷阱
5.1 關於字串的陷阱
5.1.1 JVM 對字串的處理
5.1.2 不可變的字串
5.1.3 字串比較
5.2 運算式類型的陷阱
5.2.1 運算式類型的自動提升
5.2.2 複合設定運算子的陷阱
5.3 輸入法導致的陷阱
5.4 註釋的字元必須合法
5.5 逸出字元的陷阱
5.5.1 慎用字元的Unicode 逸出形式
5.5.2 中止行註釋的逸出字元
5.6 泛型可能引起的錯誤
5.6.1 原始類型變數的給予值
5.6.2 原始類型帶來的抹除
5.6.3 建立泛型陣列的陷阱
5.7 正則運算式的陷阱
5.8 多執行緒的陷阱
5.8.1 不要呼叫run 方法
5.8.2 靜態的同步方法
5.8.3 靜態初始化區塊啟動新執行緒執行初始化
5.8.4 注意多執行緒執行環境
5.9 小結
第6課 流程控制的陷阱
6.1 switch 敘述陷阱
6.1.1 default 分支永遠會執行嗎
6.1.2 break 的重要性
6.1.3 switch 運算式的類型
6.2 標籤引起的陷阱
6.3 if 敘述的陷阱
6.3.1 else 隱含的條件
6.3.2 小心空敘述
6.4 迴圈區塊的大括號
6.4.1 什麼時候可以省略大括號
6.4.2 省略大括號的危險
6.5 for 迴圈的陷阱
6.5.1 分號惹的禍
6.5.2 小心迴圈計數器的值
6.5.3 浮點數作迴圈計數器
6.6 foreach 迴圈的迴圈計數器
6.7 小結
第7課 物件導向的陷阱
7.1 instanceof 運算子的陷阱
7.2 建構元的陷阱
7.2.1 建構元之前的void
7.2.2 建構元建立物件嗎
7.2.3 無限遞迴的建構元
7.3 持有目前類別的實體
7.4 到底呼叫哪個重載的方法
7.5 方法重新定義的陷阱
7.5.1 重新定義private 方法
7.5.2 重新定義其他存取權限的方法
7.6 非靜態內部類別的陷阱
7.6.1 非靜態內部類別的建構元
7.6.2 非靜態內部類別不能擁有靜態成員
7.6.3 非靜態內部類別的子類別
7.7 static 關鍵字
7.7.1 靜態方法屬於類別
7.7.2 靜態內部類別的限制
7.8 native 方法的陷阱
7.9 小結
第8課 例外捕捉的陷阱
8.1 正確關閉資源的方式
8.2 finally 區塊的陷阱
8.2.1 finally 的執行規則
8.2.2 finally 區塊和方法傳回值
8.3 catch 區塊的用法
8.3.1 catch 區塊的順序
8.3.2 不要用catch 代替流程控制
8.3.3 只能catch 可能拋出的例外
8.3.4 實際的修復
8.4 繼承得到的例外
8.5 小結
第9課 線性表
9.1 線性表概述
9.1.1 線性表的定義及邏輯結構
9.1.2 線性表的基本操作
9.2 順序儲存結構
9.3 鏈式儲存結構
9.3.1 單鏈結串列上的基本運算
9.3.2 迴圈鏈結串列
9.3.3 雙向鏈結串列
9.4 線性表的分析
9.4.1 線性表的實現分析
9.4.2 線性表的功能
9.5 小結
第10課 堆疊和佇列
10.1 堆疊
10.1.1 堆疊的基本定義
10.1.2 堆疊的常用操作
10.1.3 堆疊的順序儲存結構及實現
10.1.4 堆疊的鏈式儲存結構及實現
10.1.5 Java 集合中的堆疊
10.2 佇列
10.2.1 佇列的基本定義
10.2.2 佇列的常用操作
10.2.3 佇列的順序儲存結構及實現
10.2.4 迴圈佇列
10.2.5 佇列的鏈式儲存結構及實現
10.2.6 Java 集合中的佇列
10.3 雙向佇列
10.4 小結
第11課 樹和二元樹
11.1 樹的概述
11.1.1 樹的定義和基本術語
11.1.2 樹的基本操作
11.1.3 父節點標記法
11.1.4 子節點鏈標記法
11.2 二元樹
11.2.1 二元樹的定義和基本概念
11.2.2 二元樹的基本操作
11.2.3 二元樹的順序儲存
11.2.4 二元樹的二叉鏈結串列儲存
11.2.5 二元樹的三叉鏈結串列儲存
11.3 檢查二元樹
11.3.1 先序檢查
11.3.2 中序檢查
11.3.3 後序檢查
11.3.4 廣度優先(按層)檢查
11.4 森林、樹和二元樹的轉換
11.4.1 森林、樹和二元樹的轉換
11.4.2 樹的鏈結串列儲存
11.5 霍夫曼樹
11.5.1 霍夫曼樹的定義和基本概念
11.5.2 建立霍夫曼樹
11.5.3 霍夫曼解碼
11.6 排序二元樹
11.7 紅黑樹
11.7.1 插入操作
11.7.2 刪除操作
11.8 小結
第12課 常用的內部排序
12.1 排序的基本概念
12.1.1 排序概述
12.1.2 內部排序的分類
12.2 選擇排序法
12.2.1 直接選擇排序
12.2.2 堆積排序
12.3 交換排序
12.3.1 泡沫排序
12.3.2 快速排序
12.4 插入排序
12.4.1 直接插入排序
12.4.2 二元插入排序
12.4.3 Shell 排序
12.5 合併排序
12.6 桶式排序
12.7 基數排序
12.8 小結
第13課 程式開發
13.1 紮實的基本功
13.1.1 快速的輸入能力
13.1.2 程式設計實現能力
13.1.3 快速除錯
13.2 程式開發之前
13.2.1 分析軟體的元件模型
13.2.2 建立軟體的資料模型
13.3 弄清程式的實際實現
13.3.1 各元件如何通訊
13.3.2 人機互動的實現
13.3.3 複雜演算法的分析
13.4 撰寫開發文件
13.4.1 繪製建模圖、流程圖
13.4.2 提供簡要說明
13.4.3 撰寫虛擬碼實現
13.5 寫程式實現和開發心態
13.5.1 開發是複雜的
13.5.2 開發過程是漫長的
13.6 小結
第14課 程式偵錯
14.1 程式的可偵錯性
14.1.1 增加註釋
14.1.2 使用log
14.2 程式偵錯的基本方法
14.2.1 借助編譯器的程式碼審查
14.2.2 追蹤程式執行流程
14.2.3 中斷點偵錯
14.2.4 隔離偵錯
14.2.5 錯誤重現
14.3 記錄常見錯誤
14.3.1 常見例外可能的錯誤原因
14.3.2 常見執行時例外可能的錯誤原因
14.4 程式偵錯的整體想法
14.4.1 分段偵錯
14.4.2 分模組偵錯
14.5 偵錯心態
14.5.1 誰都會出錯
14.5.2 偵錯比寫程式更費時
14.6 小結
第15課 使用IDE工具
15.1 何時開始利用IDE 工具
15.2 IDE 工具概述
15.2.1 IDE 工具的基本功能
15.2.2 常見的Java IDE 工具
15.3 專案管理
15.3.1 建立專案
15.3.2 自動編譯
15.3.3 自動佈署、執行
15.4 程式碼管理
15.4.1 精靈式的程式碼產生
15.4.2 程式碼產生器
15.4.3 程式碼提示
15.4.4 自動程式碼補齊
15.4.5 即時錯誤提示
15.5 專案偵錯
15.5.1 設定中斷點
15.5.2 單步偵錯
15.5.3 單步、步出
15.6 團隊協作功能
15.7 小結
第16課 軟體測試
16.1 軟體測試概述
16.1.1 軟體測試的概念和目的
16.1.2 軟體測試的分類
16.1.3 開發活動和測試活動
16.1.4 常見Bug 管理工具
16.2 單元測試
16.2.1 單元測試概述
16.2.2 單元測試的邏輯覆蓋
16.2.3 JUnit 介紹
16.2.4 JUnit 的用法
16.3 系統測試和自動化測試
16.3.1 系統測試概述
16.3.2 自動化測試
16.3.3 常見自動化測試工具
16.4 性能測試
16.4.1 性能測試概述
16.4.2 性能測試的相關概念
16.4.3 常見性能測試工具
16.5 小結
第1課 陣列與記憶體控制
1.1 陣列初始化
1.1.1 Java 陣列是靜態的
1.1.2 陣列一定要初始化嗎
1.1.3 基本類型陣列的初始化
1.1.4 參考類型陣列的初始化
1.2 使用陣列
1.2.1 陣列元素就是變數
1.2.2 沒有多維陣列
1.3 小結
第2課 物件與記憶體控制
2.1 執行個體變數和類別變數
2.1.1 執行個體變數和類別變數的屬性
2.1.2 執行個體變數的初始化時機
2.1.3 類別變數的初始化時機
2.2 父類別建構元
2.2.1 隱式呼叫和顯式呼叫
2.2.2 存取子類別物件的執行個體變數
2.2.3 呼叫被子類別重新定義的方法
2.3 父子實...
購物須知
退換貨說明:
會員均享有10天的商品猶豫期(含例假日)。若您欲辦理退換貨,請於取得該商品10日內寄回。
辦理退換貨時,請保持商品全新狀態與完整包裝(商品本身、贈品、贈票、附件、內外包裝、保證書、隨貨文件等)一併寄回。若退回商品無法回復原狀者,可能影響退換貨權利之行使或須負擔部分費用。
訂購本商品前請務必詳閱退換貨原則。