本書以零基礎(chǔ)講解為宗旨,用實例引導(dǎo)讀者學(xué)習(xí),深入淺出地介紹了Java的相關(guān)知識和實戰(zhàn)技巧。
本書“第Ⅰ篇 基礎(chǔ)知識”主要介紹Java開發(fā)環(huán)境搭建、Java程序要素、常量、變量、數(shù)據(jù)類型、運算符、表達式、語句、流程控制、數(shù)組、枚舉、類、對象以及方法等,“第Ⅱ篇 核心技術(shù)”主要介紹類的封裝、繼承、多態(tài)、抽象類、接口、Java常用類庫以及異常的捕獲與處理等,“第Ⅲ篇 高級應(yīng)用”主要介紹多線程、文件I/O操作、GUI編程、數(shù)據(jù)庫編程、Java Web以及常用設(shè)計框架等,“第Ⅳ篇 項目實戰(zhàn)”主要介紹中國象棋和我的飯票網(wǎng)等項目。此外,附贈的電子書中還介紹了Android編輯基礎(chǔ)、Hadoop下的數(shù)據(jù)處理、全分布式Hadoop集群的構(gòu)建等內(nèi)容。
本書提供了與圖書內(nèi)容全程同步的視頻教程,還贈送了大量相關(guān)學(xué)習(xí)資料,以便讀者配合學(xué)習(xí)。
本書適合任何想學(xué)習(xí)Java的讀者,無論你是否從事計算機相關(guān)行業(yè),是否接觸過Java,均可通過學(xué)習(xí)本書快速地掌握Java的開發(fā)方法和技巧。
1.豐富、實用、專業(yè)的范例和項目
本書結(jié)合實際工作中的范例,逐一講解Java的各種知識和技術(shù);結(jié)尾還以實際開發(fā)項目來總結(jié)本書所學(xué)內(nèi)容,幫助讀者在實戰(zhàn)中掌握知識,輕松獲得項目經(jīng)驗。
2.習(xí)題要點匯總,隨時檢測自己的學(xué)習(xí)成果
每章開頭給出了“本章要點”,以便讀者明確學(xué)習(xí)方向。每章結(jié)尾的“實戰(zhàn)練習(xí)”則根據(jù)所在章的知識點精心設(shè)計而成,讀者可以隨時進行自我檢測,鞏固所學(xué)知識。
3.隨書附贈教學(xué)錄像,書影同步,讓你的學(xué)習(xí)更加立體簡單
17小時全程同步教學(xué)錄像,錄像涵蓋本書所有知識點,詳細講解每個范例及項目的開發(fā)過程與關(guān)鍵點,幫助讀者更輕松地掌握書中所有的Java程序設(shè)計知識。
4.海量程序代碼資源大放送
贈送大量資源,包括Java和Oracle項目實戰(zhàn)教學(xué)錄像、Java SE類庫查詢手冊、Eclipse常用快捷鍵說明文檔、Eclipse提示與技巧電子書、Java常見面試題、Java常見錯誤及解決方案、Java開發(fā)經(jīng)驗及技巧大匯總、Java程序員職業(yè)規(guī)劃、Java程序員面試技巧。
寧躍飛
工程碩士,副教授,現(xiàn)執(zhí)教于鄭州升達經(jīng)貿(mào)管理學(xué)院信息工程學(xué)院。主要研究方向為計算機網(wǎng)絡(luò)、物聯(lián)網(wǎng)技術(shù)應(yīng)用等。主持和參與科研(教研)項目9項,參與編寫教材(專著)6部,發(fā)表相關(guān)科研(教研)論文10余篇。
史衛(wèi)亞
博士,副教授,現(xiàn)執(zhí)教于河南工業(yè)大學(xué)信息科學(xué)與工程學(xué)院。主要研究方向為機器學(xué)習(xí)、大數(shù)據(jù)檢索、數(shù)據(jù)庫、圖像和視頻處理、人工智能和模式識別等。先后在國內(nèi)外核心期刊及會議上發(fā)表30多篇論文,參加多項國家自然科學(xué)基金、河南省科技攻關(guān)項目。
張洪超
電力工程師 ,河南工業(yè)大學(xué)計算機碩士。主要研究方向為圖像和視頻處理、基于人工智能的網(wǎng)絡(luò)安全等。
第 0 章 Java學(xué)習(xí)指南
0.1 Java為什么重要 002
0.2 Java簡史——帶給我們的一點思考 003
0.3 Java應(yīng)用領(lǐng)域和前景 008
0.4 Java學(xué)習(xí)路線圖 010
第、 篇基礎(chǔ)知識
第 1 章 Java開發(fā)環(huán)境搭建
1.1 Java開發(fā)環(huán)境 013
1.2 下載與安裝JDK 013
1.2.1 下載JDK 013
1.2.2 安裝JDK 015
1.3 Java環(huán)境變量的配置 017
1.3.1 理解環(huán)境變量 017
1.3.2 JDK中的3個環(huán)境變量 018
1.4 享受安裝成果—開發(fā)第 一個Java程序 023
1.5 Eclipse的使用 025
1.5.1 Eclipse概述 025
1.5.2 創(chuàng)建Java項目 026
1.5.3 創(chuàng)建Java類文件 027
1.5.4 運行Java程序 029
1.6 在AndroidStudio中運行Java程序 030
1.7 高手點撥 031
1.8 實戰(zhàn)練習(xí) 032
第 2 章 Java程序要素概覽
2.1 一個簡單的例子 034
2.2 認識Java程序 035
2.2.1 Java程序的框架 035
2.2.2 標識符 036
2.2.3 關(guān)鍵字 037
2.2.4 注釋 037
2.2.5 變量 038
2.2.6 數(shù)據(jù)類型 039
2.2.7 運算符和表達式 040
2.2.8 類 040
2.3 程序的檢測 041
2.3.1 語法錯誤 041
2.3.2 語義錯誤 042
2.4 提高程序的可讀性 042
2.5 綜合實例——計算兩數(shù)之和 043
2.6 高手點撥 044
2.7 實戰(zhàn)練習(xí) 044
第 3 章 Java編程基礎(chǔ)—常量、變量與數(shù)據(jù)類型
3.1 常量與變量 046
3.1.1 常量的聲明與使用 046
3.1.2 變量的聲明與使用 047
3.2 基本數(shù)據(jù)類型 051
3.2.1 數(shù)據(jù)類型的意義 051
3.2.2 整數(shù)類型 052
3.2.3 浮點數(shù)類型 055
3.2.4 字符類型 056
3.2.5 布爾類型 057
3.2.6 var類型 058
3.3 綜合實例——var 類型和基本類型的比較 059
3.4 高手點撥 060
3.5 實戰(zhàn)練習(xí) 060
第 4 章 編程元素詳解——運算符、表達式、語句與流程控制
4.1 運算符 062
4.1.1 賦值運算符 062
4.1.2 一元運算符 062
4.1.3 算術(shù)運算符 064
4.1.4 邏輯運算符 065
4.1.5 位運算符 067
4.1.6 三元運算符 069
4.1.7 if 語句與關(guān)系運算符 070
4.1.8 遞增與遞減運算符 070
4.2 表達式 071
4.2.1 算術(shù)表達式與關(guān)系表達式 072
4.2.2 邏輯表達式與賦值表達式 073
4.2.3 表達式的類型轉(zhuǎn)換 074
4.3 語句 075
4.3.1 語句中的空格 075
4.3.2 空語句 076
4.3.3 聲明語句與賦值語句 077
4.4 程序的控制邏輯 077
4.4.1 順序結(jié)構(gòu) 077
4.4.2 選擇結(jié)構(gòu) 078
4.4.3 循環(huán)結(jié)構(gòu) 078
4.5 選擇結(jié)構(gòu) 078
4.5.1 if 語句 079
4.5.2 if...else 語句 081
4.5.3 if...else if...else 語句 083
4.5.4 多重選擇 switch 語句 084
4.6 循環(huán)結(jié)構(gòu) 086
4.6.1 while 循環(huán) 086
4.6.2 do...while 循環(huán) 088
4.6.3 for 循環(huán) 089
4.7 循環(huán)的跳轉(zhuǎn) 091
4.7.1 break 語句 091
4.7.2 continue 語句 093
4.7.3 return 語句 095
4.8 綜合實例——模擬拋硬幣一億次 096
4.9 高手點撥 097
4.10 實戰(zhàn)練習(xí) 098
第 5 章 數(shù)組與枚舉
5.1 理解數(shù)組 100
5.2 一維數(shù)組 102
5.2.1 一維數(shù)組的聲明與內(nèi)存的分配 102
5.2.2 數(shù)組中元素的表示方法 103
5.2.3 數(shù)組元素的使用 104
5.3 二維數(shù)組 107
5.3.1 二維數(shù)組的聲明與賦值 107
5.3.2 二維數(shù)組元素的引用及訪問 108
5.4 枚舉簡介 109
5.5 Java 中的枚舉 110
5.5.1 常見的枚舉定義方法 110
5.5.2 在程序中使用枚舉 110
5.5.3 在 switch 語句中使用枚舉 111
5.6 綜合實例——查找二維數(shù)組中的最大值 112
5.7 高手點撥 113
5.8 實戰(zhàn)練習(xí) 113
第 6 章 類和對象
6.1 理解面向?qū)ο蟪绦蛟O(shè)計 116
6.1.1 面向?qū)ο蟪绦蛟O(shè)計簡介 116
6.1.2 面向?qū)ο蟪绦蛟O(shè)計的基本特征 116
6.2 面向?qū)ο蟮幕靖拍睢?17
6.2.1 類 117
6.2.2 對象 117
6.2.3 類和對象的關(guān)系 117
6.3 類的聲明與定義 118
6.3.1 類的聲明 118
6.3.2 類的定義 119
6.4 類的屬性 121
6.4.1 屬性的定義 121
6.4.2 屬性的使用 121
6.5 對象的聲明與使用 124
6.5.1 對象的聲明 124
6.5.2 對象的使用 125
6.5.3 匿名對象 127
6.6 綜合實例——創(chuàng)建一個手機對象 128
6.7 高手點撥 129
6.8 實戰(zhàn)練習(xí) 129
第 7 章 重復(fù)調(diào)用的代碼塊—方法
7.1 方法的基本定義 132
7.2 方法的使用 133
7.3 方法中的形參與實參 135
7.4 方法的重載 135
7.5 構(gòu)造方法 139
7.5.1 構(gòu)造方法的概念 139
7.5.2 構(gòu)造方法的重載 141
7.5.3 構(gòu)造方法的私有化 144
7.6 在方法內(nèi)部調(diào)用方法 147
7.7 static方法 149
7.7.1 自定義static方法 149
7.7.2 static主方法 150
7.8 綜合實例——求解一元二次方程 152
7.9 高手點撥 153
7.10 實戰(zhàn)練習(xí) 153
第、 篇核心技術(shù)
第 8 章 類的封裝、繼承與多態(tài)
8.1 封裝 157
8.1.1 Java訪問權(quán)限修飾符 157
8.1.2 封裝問題引例 157
8.1.3 類的封裝實例 158
8.2 繼承 164
8.2.1 Java中的繼承 164
8.2.2 繼承問題的引入 165
8.2.3 繼承實現(xiàn)代碼復(fù)用 166
8.2.4 繼承的限制 167
8.3 覆寫 170
8.3.1 屬性的覆蓋 170
8.3.2 方法的覆寫 171
8.4 多態(tài) 174
8.4.1 多態(tài)的基本概念 174
8.4.2 方法的多態(tài)性 176
8.4.3 對象的多態(tài)性 177
8.5 綜合實例—創(chuàng)建Person類和它的子類 178
8.6 高手點撥 180
8.7 實戰(zhàn)練習(xí) 180
第 9 章 抽象類與接口
9.1 抽象類 182
9.1.1 抽象類的定義 182
9.1.2 抽象類的使用 182
9.2 接口 185
9.2.1 接口的基本概念 185
9.2.2 使用接口的原則 186
9.3 Lambda表達式 194
9.4 綜合實例——實現(xiàn)USB接口 196
9.5 高手點撥 197
9.6 實戰(zhàn)練習(xí) 197
第 10章 Java常用類庫
10.1 類庫的概念 200
10.2 基本數(shù)據(jù)類型的包裝類 200
10.2.1 裝箱與拆箱 201
10.2.2 基本數(shù)據(jù)類型與字符串的轉(zhuǎn)換 202
10.3 String類 204
10.3.1 String類的聲明 205
10.3.2 String類中常用的方法 206
10.4 Math與Random類 209
10.4.1 Math類的使用 209
10.4.2 Random類的使用 211
10.5 綜合實例——驗證身份證號碼是否合法 212
10.6 高手點撥 214
10.7 實戰(zhàn)練習(xí) 214
第 11章 異常的捕獲與處理
11.1 異常的基本概念 216
11.1.1 簡單的異常范例 216
11.1.2 異常的處理 217
11.2 異常類的處理流程 223
11.3 throws 關(guān)鍵字 224
11.4 throw 關(guān)鍵字 225
11.5 異常處理的標準格式 226
11.6 綜合實例——數(shù)組的創(chuàng)建與查找 227
11.7 高手點撥 228
11.8 實戰(zhàn)練習(xí) 228
第、 篇高級應(yīng)用
第 12章 多線程
12.1 感知多線程 231
12.2 體驗多線程 231
12.2.1 通過繼承 Thread 類實現(xiàn)多線程 232
12.2.2 通過實現(xiàn) Runnable 接口實現(xiàn)多線程 234
12.2.3 兩種多線程實現(xiàn)機制的比較 236
12.2.4 Java 8 中運行線程的新方法 239
12.3 線程的狀態(tài) 240
12.4 線程操作的一些方法 242
12.4.1 取得和設(shè)置線程的名稱 242
12.4.2 判斷線程是否啟動 245
12.4.3 守護線程與 setDaemon() 方法 246
12.4.4 線程的聯(lián)合 247
12.5 綜合實例——龜兔賽跑 248
12.6 高手點撥 249
12.7 實戰(zhàn)練習(xí) 250
第 13章 文件 I/O 操作
13.1 輸入 / 輸出的重要性 252
13.2 讀寫文本文件 252
13.2.1 File 文件類 252
13.2.2 文本文件的操作 254
13.2.3 字符編碼問題 257
13.3 文本的I/O 260
13.3.1 讀入文本單詞 260
13.3.2 讀入單個字符 261
13.3.3 判斷字符分類的方法 261
13.3.4 讀入一行文本 261
13.3.5 將字符轉(zhuǎn)換為數(shù)字 262
13.4 使用 try-with-resources 自動關(guān)閉資源 263
13.5 命令行參數(shù)的使用 265
13.5.1 System 類對 I/O 的支持 265
13.5.2 Java 命令行參數(shù)解析 266
13.6 綜合實例——文本替換程序 268
13.7 高手點撥 269
13.8 實戰(zhàn)練習(xí) 270
第 14章 GUI 編程
14.1 GUI 概述 272
14.2 JavaFX 與 Swing 以及 AWT 的比較 272
14.2.1 JavaFX 程序的基本結(jié)構(gòu) 272
14.2.2 GUI 與AWT 276
14.2.3 Swing 和 AWT 的區(qū)別與聯(lián)系 276
14.3 AWT 容器 277
14.3.1 Frame 窗口 277
14.3.2 Panel 面板 280
14.3.3 布局管理器 281
14.4 AWT 常用組件 286
14.4.1 按鈕與標簽組件 287
14.4.2 文本域 289
14.4.3 圖形控件 290
14.5 事件處理 291
14.5.1 事件處理的流程 292
14.5.2 常用的事件 293
14.5.3 事件處理小實例——會動的小烏龜 297
14.6 Swing概述 299
14.7 Swing的基本組件 300
14.7.1 JTable表格 301
14.7.2 JComboBox下拉列表框 302
14.7.3 組件的常用方法 303
14.8 綜合實例——簡易學(xué)生管理系統(tǒng) 304
14.9 高手點撥 306
14.10 實戰(zhàn)練習(xí) 306
第 15章 數(shù)據(jù)庫編程
15.1 數(shù)據(jù)庫概述 308
15.2 Java數(shù)據(jù)庫連接利器——JDBC 308
15.3 輕量級數(shù)據(jù)庫——SQLite 308
15.3.1 SQLite的準備工作 308
15.3.2 用Java連接SQLite 310
15.3.3 創(chuàng)建數(shù)據(jù)表 312
15.3.4 更新數(shù)據(jù)表 313
15.3.5 查詢數(shù)據(jù)表 318
15.4 MySQL數(shù)據(jù)庫 319
15.4.1 MySQL數(shù)據(jù)庫的基本命令 320
15.4.2 在Java中使用MySQL數(shù)據(jù)庫 322
15.5 綜合實例—簡易學(xué)生信息管理系統(tǒng) 324
15.5.1 基本數(shù)據(jù)結(jié)構(gòu) 324
15.5.2 數(shù)據(jù)庫操作有關(guān)工具類 325
15.5.3 主界面的構(gòu)造 328
15.5.4 用于輸入新數(shù)據(jù)的對話框?qū)崿F(xiàn) 331
15.6 高手點撥 333
15.7 實戰(zhàn)練習(xí) 334
第 16章 Java Web初步
16.1 JSP概述 336
16.2 JSP的運行環(huán)境 336
16.2.1 安裝Tomcat 336
16.2.2 配置虛擬目錄 338
16.2.3 編寫第 一個JSP程序 340
16.2.4 Tomcat執(zhí)行流程 341
16.3 基礎(chǔ)語法 341
16.3.1 顯式注釋與隱式注釋 341
16.3.2 代碼段 342
16.3.3 page指令 344
16.3.4 包含指令 346
16.3.5 跳轉(zhuǎn)指令 349
16.4 內(nèi)置對象 350
16.4.1 request對象 351
16.4.2 response對象 354
16.5 Servlet 359
16.5.1 Servlet簡介 359
16.5.2 第 一個Servlet程序 360
16.6 綜合實例—簡易通信地址管理系統(tǒng) 363
16.6.1 基本數(shù)據(jù)結(jié)構(gòu) 363
16.6.2 連接數(shù)據(jù)庫的工具類 365
16.6.3 構(gòu)造Servlet類 366
16.6.4 構(gòu)造JSP 367
16.7 高手點撥 370
16.8 實戰(zhàn)練習(xí) 370
第 17章 常用設(shè)計框架
17.1 框架的內(nèi)涵 372
17.2 Struts 開發(fā)基礎(chǔ) 372
17.2.1 Struts簡介 372
17.2.2 MVC的基本概念 373
17.2.3 下載Struts 2 類庫 373
17.2.4 從Struts 2的角度理解MVC 374
17.2.5 第 一個Struts 2 實例 374
17.2.6 運行測試strutsLoginDemo工程 384
17.2.7 小結(jié) 384
17.3 Spring快速上手 385
17.3.1 Spring基本知識 385
17.3.2 Spring開發(fā)準備 385
17.3.3 Spring框架配置 386
17.3.4 Spring開發(fā)實例 388
17.4 Hibernate 入門 393
17.4.1 Hibernate 開發(fā)基礎(chǔ) 393
17.4.2 Hibernate 開發(fā)準備 393
17.4.3 Hibernate 開發(fā)實例 395
17.5 綜合實例——基于 SSH 的訂單系統(tǒng) 404
17.5.1 項目初始化 404
17.5.2 預(yù)模型層的開發(fā) 405
17.5.3 持久層的配置 406
17.5.4 業(yè)務(wù)層的開發(fā)和配置 407
17.5.5 DAO 接口的定義和實現(xiàn) 408
17.5.6 業(yè)務(wù)層的配置 409
17.5.7 UI 層的實現(xiàn) 409
17.6 高手點撥 412
17.7 實戰(zhàn)練習(xí) 412
第、 篇項目實戰(zhàn)
第 18章 Java 項目實戰(zhàn)——中國象棋
18.1 項目概述 415
18.1.1 功能描述 415
18.1.2 中國象棋簡介 415
18.1.3 中國象棋棋盤 415
18.1.4 中國象棋棋子 415
18.2 總體設(shè)計 416
18.3 代碼實現(xiàn) 416
18.3.1 引用類包及類的定義 416
18.3.2 圖形用戶界面模塊 417
18.3.3 按鈕的操作模塊 417
18.3.4 棋子的操作模塊 417
18.3.5 棋子的移動規(guī)則類模塊 418
18.3.6 運行程序 418
第 19章 Java Web 項目實戰(zhàn)——我的飯票網(wǎng)
19.1 系統(tǒng)分析 420
19.2 系統(tǒng)設(shè)計 420
19.3 數(shù)據(jù)庫設(shè)計 420
19.3.1 功能分析 420
19.3.2 基本表設(shè)計 421
19.4 用戶注冊模塊設(shè)計 424
19.4.1 用戶注冊模塊概述 425
19.4.2 與用戶注冊有關(guān)的數(shù)據(jù)庫連接及操作類 425
19.4.3 用戶注冊界面設(shè)計 428
19.4.4 用戶注冊事件處理頁面 429
19.5 用戶登錄模塊設(shè)計 430
19.5.1 用戶登錄模塊概述 430
19.5.2 與用戶登錄有關(guān)的數(shù)據(jù)庫連接及操作類 430
19.5.3 用戶登錄界面設(shè)計 431
19.5.4 用戶登錄驗證處理頁面 432
19.6 用戶主頁面模塊設(shè)計 433
19.6.1 用戶主頁面模塊概述 433
19.6.2 與用戶主頁面有關(guān)的數(shù)據(jù)庫連接及操作類 433
19.6.3 用戶主頁面界面設(shè)計 435
19.7 高手點撥 436
19.8 實戰(zhàn)練習(xí) 436
(以下內(nèi)容為電子書)
第 20章 Android 編程基礎(chǔ)
20.1 Android 簡介 438
20.1.1 Android 系統(tǒng)架構(gòu) 438
20.1.2 Android 應(yīng)用開發(fā)特色 438
20.2 搭建開發(fā)環(huán)境 438
20.2.1 準備所需要的軟件 439
20.2.2 搭建開發(fā)環(huán)境 439
20.3 創(chuàng)建第 一個 Android 項目 442
20.3.1 創(chuàng)建 HelloWorld 項目 442
20.3.2 運行 HelloWorld 項目 443
20.3.3 解析第 一個 Android 程序 445
20.4 詳解基本布局 447
20.4.1 線性布局 447
20.4.2 相對布局 451
20.4.3 幀布局 454
20.5 常見控件的使用方法 455
20.5.1 TextView 455
20.5.2 EditText 457
20.5.3 Button 458
20.5.4 ImageView 461
20.6 Activity詳細介紹 462
20.6.1 Activity的生命周期 462
20.6.2 Activity的狀態(tài) 462
20.6.3 Activity的啟動模式 462
20.7 綜合實例——編寫聊天界面 463
20.7.1 制作Nine-Patch圖片 464
20.7.2 編寫聊天界面 465
20.8 高手點撥 470
20.9 實戰(zhàn)練習(xí) 470
第 21章 大數(shù)據(jù)項目實戰(zhàn)——Hadoop下的數(shù)據(jù)處理
21.1 認識Hadoop 472
21.2 理解MapReduce編程范式 473
21.3 第 一個Hadoop實例——WordCount代碼詳解 473
21.3.1 WordCount基本流程 474
21.3.2 WordCount代碼詳解 475
21.3.3 運行WordCount程序 478
21.4 面向K-Means聚類算法的Hadoop實踐 482
21.4.1 K-Means聚類算法簡介 482
21.4.2 基于MapReduce的K-Means算法實現(xiàn) 484
21.4.3 編寫K-Means算法代碼 484
21.4.4 在Hadoop集群運行KMeans項目 506
21.5 高手點撥 510
21.6 實戰(zhàn)練習(xí) 510
附錄 全分布式Hadoop集群的構(gòu)建
安裝CentOS 7 511
安裝Java并配置環(huán)境變量 512
安裝Hadoop 514
下載Hadoop包 514
安裝Hadoop的方法 514
Hadoop的運行模式 514
本地模式(Local Model) 514
偽分布模式(Pseudo-Distributed Model) 515
全分布模式(Fully Distributed Model) 515
Hadoop集群構(gòu)建 515
設(shè)置靜態(tài)IP地址 515
修改hosts文件 517
安裝和配置SSH服務(wù) 517
安裝SSH 518
SSH免密碼登錄 518
虛擬機的配置文件同步 520
全分布模式下配置Hadoop 520
配置Hadoop環(huán)境變量 520
配置hadoop-env.sh文件 521
配置HDFS的主節(jié)點(core-site.xml文件) 522
配置slaves文件 523
配置yarn-site.xml文件 524
配置mapred-site.xml文件 525
驗證全分布模式 526
默認配置文件所在位置 527
關(guān)閉Hadoop 528