本書主要以零基礎的讀者角度出發(fā),通過簡單易懂的語言、圖文并茂、知識點由淺入深的講解,案例充足和課后習題鞏固。使得讀者在循環(huán)漸進過程中掌握Java語言編程的知識,從提升自身的實際開發(fā)能力。全書共分為4篇11章,分別為基礎篇、高級篇、數據結構與算法篇、實戰(zhàn)篇。內容主要包括Java環(huán)境搭建,Java變量命令規(guī)范,Java中的各類數據類型,流程控制語句,繼承,多態(tài),類與方法,高級特征,面向常用類,異常處理,Lambda表達式,泛型,棧,堆,鏈表,樹,查找算法,排序算法,遞歸算法和五子棋對戰(zhàn)項目等。本書所有章節(jié)都附有對應的課后習題,所有習題都帶有完整的源碼答案,快速的幫助讀者提高編碼能力,提升對問題的解決和思考能力。
本書是粵嵌公司策劃并組織編寫的產學合作協(xié)同育人系列教材之一,實踐性較強,涵蓋了高校相關專業(yè)方向的主要課程。本書作者具有企業(yè)開發(fā)實戰(zhàn)經驗和行業(yè)培訓的經驗,也為高校學生講授相關的課程,理論結合實踐。
張毅恒。廣州粵嵌通信科技股份有限公司人工智能學科負責人。系統(tǒng)架構師、高級工程師。5年多研發(fā)經驗,8年多技術講師經驗。曾在納斯達克上市公司任職,負責手機與平板電腦Android系統(tǒng)的移植工作;曾參與車聯(lián)網系統(tǒng)的研發(fā),負責整個系統(tǒng)的架構與搭建工作。從Linux系統(tǒng)移植、后臺服務器程序開發(fā),到Android應用開發(fā)、H5微信小程序,到機器學習與數據分析,都有豐富的實踐和教學工作經驗。
第 1章 搭建Java開發(fā)環(huán)境 2
1.1 Java概述 2
1.1.1 Java語言的產生 2
1.1.2 Java語言的發(fā)展 3
1.2 Java語言的特點 5
1.2.1 面向對象 5
1.2.2 可移植性 5
1.2.3 穩(wěn)健性和安全性 5
1.2.4 多線程和動態(tài)性 5
1.3 Java程序工作原理 6
1.3.1 編譯型語言與解釋型語言 6
1.3.2 Java程序執(zhí)行機制 6
1.4 搭建JDK環(huán)境 6
1.5 配置環(huán)境變量 10
1.6 “第 一個”Java程序 14
1.7 集成開發(fā)環(huán)境Eclipse 16
1.8 習題 20
第 2章 Java基本程序設計結構 21
2.1 注釋 22
2.1.1 單行注釋 22
2.1.2 多行注釋 22
2.1.3 文檔注釋 22
2.2 標識符 24
2.3 關鍵字 24
2.3.1 類和接口的關鍵字 25
2.3.2 數據類型的關鍵字 25
2.3.3 流程控制的關鍵字 26
2.3.4 類成員訪問權限的關鍵字 26
2.3.5 類實例的關鍵字 26
2.3.6 異常處理相關的關鍵字 27
2.3.7 其他關鍵字 27
2.4 數據類型 27
2.4.1 Java的基本數據類型 28
2.4.2 Java數據類型的轉換 29
2.5 變量 30
2.6 常量 32
2.7 運算符 33
2.7.1 算術運算符 33
2.7.2 賦值運算符 34
2.7.3 關系運算符 34
2.7.4 邏輯運算符 34
2.7.5 位運算符 34
2.7.6 位移運算符 35
2.7.7 其他運算符 35
2.7.8 運算符的優(yōu)先級 35
2.8 流程控制結構 36
2.8.1 分支結構 36
2.8.3 循環(huán)結構 39
2.9 數組 45
2.9.1 數組的聲明 45
2.9.2 數組的初始化 45
2.9.3 數組的訪問 46
2.9.4 數組的遍歷 46
2.9.5 二維數組 48
2.10 習題 49
第3章 Java面向對象入門結構 52
3.1 面向對象思想 52
3.2 類與對象 54
3.3 屬性 55
3.4 方法 56
3.5 方法重載 58
3.6 構造器 59
3.6.1 構造器重載 60
3.6.2 默認構造器 60
3.7 初始化塊 61
3.7.1 普通初始化塊 61
3.7.2 靜態(tài)初始化塊 63
3.8 內部類 63
3.8.1 成員內部類 64
3.8.2 局部內部類 65
3.8.3 靜態(tài)內部類 65
3.8.4 匿名內部類 66
3.9 this的使用 67
3.9.1 引用當前類的屬性 68
3.9.2 返回類自身的引用 68
3.9.3 調用構造器 69
3.9.4 用作方法的參數 70
3.10 鏈式調用 71
3.11 習題 71
第4章 Java面向對象三大特征 75
4.1 封裝 75
4.1.1 private、protected、public、默認 76
4.1.2 package和import 77
4.2 繼承 79
4.2.1 繼承的定義 80
4.2.2 方法的重寫 82
4.2.3 super關鍵字的使用 83
4.2.4 方法調用的優(yōu)先級 87
4.3 多態(tài) 89
4.3.1 多態(tài)的定義 89
4.3.2 多態(tài)的特征 91
4.3.3 instanceof的使用 93
4.3.4 靜態(tài)綁定和動態(tài)綁定 96
4.4 習題 97
第5章 Java面向對象高級特征 100
5.1 toString()方法 100
5.2 equals()方法 102
5.3 static關鍵字 105
5.4 final關鍵字 105
5.4.1 final類 105
5.4.2 final方法 106
5.4.3 final屬性 107
5.4.4 final參數 108
5.4.5 final變量 108
5.4.6 同時使用static和final 109
5.5 抽象 110
5.6 接口 112
5.6.1 接口的定義 112
5.6.2 接口的實現 113
5.6.3 一個類實現多個接口 114
5.6.4 一個接口繼承多個接口 115
5.7 方法回調 116
5.8 單例 117
5.8.1 懶漢式單例 117
5.8.2 餓漢式單例 118
5.9 習題 119
第6章 Python面向對象 123
6.1 數組與Arrays類 124
6.2 Object類 124
6.3 基本數據類型的包裝類 125
6.3.1 基本數據類型與包裝類的轉換 125
6.3.2 基本數據類型與字符串類型的轉換 126
6.4 Math類 126
6.4.1 無理數的寫法 126
6.4.2 三角函數的方法 126
6.4.3 取整運算的方法 127
6.4.4 乘方、開方、對數的方法 127
6.4.5 其他方法 127
6.5 日期和時間相關的類 127
6.5.1 Date類 128
6.5.2 Calendar類 129
6.5.3 SimpleDateFormat類 131
6.6 字符串操作相關的類 132
6.6.1 String類 133
6.6.2 字節(jié)數組、字符數組與字符串的轉換 134
6.6.3 StringBuffer和StringBuilder類 135
6.7 隨機類 136
6.8 正則表達式 137
6.8.1 Pattern與Matcher類 137
6.8.2 元字符 138
6.8.3 提取匹配的關鍵字 140
6.8.4 正則字符串操作 141
6.9 習題 141
第7章 異常處理 146
7.1 異常概述 146
7.2 異常處理相關語法 147
7.2.1 try和catch代碼塊 147
7.2.2 多個catch代碼塊 147
7.2.3 錯誤和異常 149
7.2.4 Exception類 149
7.2.5 finally代碼塊 150
7.2.6 throws拋出異常 151
7.3 異常分類 153
7.4 捕獲異常 153
7.5 拋出異常 154
7.6 習題 156
第8章 Lambda表達式 160
8.1 值參數化與行為參數化 160
8.1.1 值參數化 160
8.1.2 行為參數化 163
8.1.3 引入Lambda 165
8.1.4 值參數化與行為參數化的比較 166
8.2 Lambda表達式 167
8.3 函數式接口 168
8.3.1 基本概念 168
8.3.2 JDK 8的函數式接口 169
8.3.3 參數的類型推斷 172
8.3.4 多個參數的運算 172
8.4 Lambda表達式的其他特性 174
8.4.1 使用局部變量 174
8.4.2 方法引用 176
8.4.3 構造器引用 176
8.4.4 Lambda表達式與匿名內部類的區(qū)別 176
8.5 習題 177
第9章 數據結構 180
9.1 數組 180
9.2 棧 181
9.3 隊列 185
9.4 鏈表 193
9.5 樹 200
9.6 堆 207
9.7 散列表 213
9.8 圖 216
9.9 習題 219
第 10章 算法 221
10.1 查找算法 221
10.1.1 順序查找法 221
10.1.2 二分查找法 222
10.2 排序算法 224
10.2.1 冒泡排序法 225
10.2.2 選擇排序法 229
10.2.3 插入排序法 232
10.2.4 希爾排序法 236
10.2.5 快速排序法 239
10.2.6 歸并排序法 242
10.2.7 堆排序法 245
10.2.8 排序算法衡量指標 249
10.3 遞歸算法 249
10.4 習題 252
第 11章 項目開發(fā)與實現——五子棋程序 256
11.1 游戲說明 256
11.1.1 游戲規(guī)則 256
11.1.2 編程注意事項 256
11.1.3 計算機下棋的策略 257
11.2 建立模型 257
11.3 輸出棋盤 258
11.4 放置棋子 260
11.5 計算機下棋策略 264
11.6 讀取用戶下棋的坐標 265
11.7 判斷贏棋條件 267
11.8 程序主流程 269