內容簡介
本書主要面向零基礎讀者,用實例引導讀者學習,深入淺出地介紹Java的相關知識和實戰技能。
本書第Ⅰ篇“基礎知識”主要講解Java開發環境搭建、Java程式要素,並逐一介紹常量、變數、運算符、表達式、語句、流程控制、數組、枚舉、類、對象以及方法等;第Ⅱ篇“核心技術”主要介紹類的封裝、繼承、多態,並逐一介紹抽象類、接口、Java常用類庫以及異常的捕獲與處理等;第Ⅲ篇“高級套用”主要介紹多執行緒、檔案I/O操作、GUI編程、Swing GUI編程、Java Web、常用設計框架以及Android編程基礎等;第Ⅳ篇“項目實戰”主要介紹智慧型電話回撥系統、理財管理系統、我的飯票網以及Hadoop下的數據處理等。
本書提供了與圖書內容全程同步的教學視頻。此外,還贈送大量相關學習資料,以便讀者擴展學習。
本書適合任何想學習Java的初學者,無論初學者是否從事計算機相關行業,是否接觸過Java,均可通過對本書內容的學習快速掌握Java的開發方法和技巧。
圖書目錄
上冊
第0章 Java學習指南
0.1 Java為什麼重要 002
0.2 Java簡史—給我們帶來的一點思考 003
0.3 Java套用領域和前景 007
0.4 Java學習路線圖 009
第Ⅰ篇基礎知識
第1章 小荷才露尖尖角——Java開發環境搭建
1.1 Java開發環境 013
1.2 安裝Java開發工具箱 013
1.2.1 下載JDK 013
1.2.2 安裝JDK 016
1.3 Java環境變數的配置 017
1.3.1 理解環境變數 017
1.3.2 JDK中的3個環境變數 018
1.4 享受安裝成果—開發第 1個Java程式 022
1.5 Eclipse的使用 023
1.5.1 Eclipse概述 023
1.5.2 創建Java項目 025
1.5.3 創建Java類檔案 026
1.5.4 在代碼編輯器中編寫Java程式代碼 027
1.5.5 運行Java程式 029
1.6 探秘Java虛擬機 029
1.7 高手點撥 030
1.8 實戰練習 032
第 2章 初識廬山真面目——Java程式要素概覽
2.1 一個簡單的例子 034
2.2 感性認識Java程式 035
2.2.1 Java程式的框架 036
2.2.2 標識符 037
2.2.3 關鍵字 037
2.2.4 注釋 038
2.2.5 變數 039
2.2.6 數據類型 040
2.2.7 運算符和表達式 040
2.2.8 類 041
2.2.9 輸入與輸出 041
2.3 程式的檢測 044
2.3.1 語法錯誤 044
2.3.2 語義錯誤 045
2.4 提高程式的可讀性 046
2.5 高手點撥 047
2.6 實戰練習 047
第3章 九層之台,起於壘土——Java編程基礎
3.1 常量與變數 050
3.1.1 常量的聲明與使用 050
3.1.2 變數的聲明與使用 051
3.2 基本數據類型 055
3.2.1 數據類型的意義 055
3.2.2 整數類型 056
3.2.3 浮點類型 059
3.2.4 字元類型 060
3.2.5 布爾類型 062
3.3 數據類型的轉換 063
3.3.1 自動類型轉換 063
3.3.2 強制類型轉換 064
3.4 高手點撥 065
3.5 實戰練習 066
第4章 基礎編程元素——運算符、表達式、語句與流程控制
4.1 運算符 070
4.1.1 賦值運算符 070
4.1.2 一元運算符 070
4.1.3 算術運算符 072
4.1.4 邏輯運算符 073
4.1.5 位運算符 076
4.1.6 三元運算符 077
4.1.7 關係運算符與 if 語句 078
4.1.8 遞增與遞減運算符 079
4.1.9 括弧運算符 080
4.2 表達式 080
4.2.1 算術表達式與關係表達式 081
4.2.2 邏輯表達式與賦值表達式 082
4.2.3 表達式的類型轉換 083
4.3 語句 084
4.3.1 語句中的空格 084
4.3.2 空語句 085
4.3.3 聲明語句與賦值語句 086
4.4 程式的控制邏輯 086
4.4.1 順序結構 087
4.4.2 分支結構 088
4.4.3 循環結構 088
4.5 選擇結構 088
4.5.1 if 語句 089
4.5.2 if…else 語句 089
4.5.3 if…else if…else 語句 090
4.5.4 多重選擇——switch 語句 091
4.6 循環結構 093
4.6.1 while 循環 093
4.6.2 do…while 循環 095
4.6.3 for 循環 097
4.6.4 foreach 循環 098
4.7 循環的跳轉 099
4.7.1 break 語句 099
4.7.2 continue 語句 101
4.7.3 return 語句 104
4.8 高手點撥 105
4.9 實戰練習 106
第5章 常用的數據結構——數組與枚舉
5.1 理解數組 108
5.2 一維數組 111
5.2.1 一維數組的聲明與記憶體的分配 111
5.2.2 數組中元素的表示方法 112
5.2.3 數組元素的使用 113
5.3 二維數組 116
5.3.1 二維數組的聲明與賦值 116
5.3.2 二維數組元素的引用及訪問 117
5.4 枚舉簡介 118
5.5 Java 中的枚舉 118
5.5.1 常見的枚舉定義方法 118
5.5.2 在程式中使用枚舉 119
5.5.3 在 switch 語句中使用枚舉 120
5.6 高手點撥 121
5.7 實戰練習 121
第6章 面向對象設計的核心——類和對象
6.1 理解面向對象程式設計 124
6.1.1 結構化程式設計簡介 124
6.1.2 面向對象程式設計簡介 124
6.1.3 面向對象程式設計的基本特徵 125
6.1.4 面向對象編程和面向過程編程的比較 126
6.2 面向對象的基本概念 127
6.2.1 類 127
6.2.2 對象 128
6.2.3 類和對象的關係 128
6.3 類的聲明與定義 129
6.3.1 類的聲明 129
6.3.2 類的定義 130
6.4 類的屬性 132
6.4.1 屬性的定義 132
6.4.2 屬性的使用 132
6.5 對象的聲明與使用 135
6.5.1 對象的聲明 135
6.5.2 對象的使用 136
6.5.3 匿名對象 138
6.5.4 對象的比較 139
6.5.5 對象數組的使用 141
6.6 this關鍵字的使用 143
6.7 static關鍵字的使用 145
6.8 final關鍵字的使用 149
6.9 高手點撥 150
6.10 實戰練習 152
第7章 重複調用的代碼塊——方法
7.1 方法的基本定義 154
7.2 方法的使用 156
7.3 方法中的形參與實參 157
7.4 方法的重載 158
7.5 構造方法 161
7.5.1 構造方法簡介 161
7.5.2 構造方法的重載 163
7.5.3 構造方法的私有化 167
7.6 在方法內部調用方法 171
7.7 代碼塊 172
7.7.1 普通代碼塊 172
7.7.2 構造代碼塊 173
7.7.3 靜態代碼塊 175
7.8 static方法 177
7.8.1 自定義static方法 177
7.8.2 static主方法 178
7.9 方法與數組 180
7.9.1 數組引用傳遞 180
7.9.2 讓方法返回數組 183
7.10 包的概念及使用 185
7.10.1 包的基本概念 185
7.10.2 包的導入 186
7.10.3 JDK中常見的包 187
7.11 高手點撥 188
7.12 實戰練習 188
第Ⅱ篇 核心技術
第8章 面向對象設計的精華——類的封裝、繼承與多態
8.1 面向對象的三大特點 191
8.1.1 封裝的含義 191
8.1.2 繼承的含義 191
8.1.3 多態的含義 192
8.2 封裝的實現 194
8.2.1 Java 訪問許可權修飾符 194
8.2.2 封裝問題引例 194
8.2.3 類的封裝實例 195
8.3 繼承的實現 202
8.3.1 繼承的基本概念 202
8.3.2 繼承問題的引入 202
8.3.3 繼承實現代碼復用 204
8.3.4 繼承的限制 205
8.4 深度認識類的繼承 208
8.4.1 子類對象的實例化過程 208
8.4.2 super關鍵字的使用 210
8.4.3 限制子類的訪問 213
8.5 覆寫 216
8.5.1 屬性的覆蓋 216
8.5.2 方法的覆寫 217
8.5.3 關於覆寫的註解——@Override 221
8.6 多態的實現 223
8.6.1 多態的基本概念 223
8.6.2 方法多態性 225
8.6.3 對象多態性 225
8.6.4 隱藏 230
8.7 高手點撥 231
8.8 實戰練習 234
第9章 凝練才是美——抽象類、接口與內部類
9.1 抽象類 236
9.1.1 抽象類的定義 236
9.1.2 抽象類的使用 236
9.2 接口 240
9.2.1 接口的基本概念 240
9.2.2 使用接口的原則 241
9.2.3 接口的作用——Java 的回調機制 248
9.3 內部類 253
9.3.1 內部類的基本定義 253
9.3.2 在方法中定義內部類 255
9.4 匿名內部類 256
9.5 匿名對象 258
9.6 高手點撥 259
9.7 實戰練習 262
第 10章 更靈活的設計——泛型
10.1 泛型的概念 264
10.2 泛型類的定義 264
10.3 泛型方法的定義 265
10.4 泛型接口的定義 265
10.5 泛型的使用限制和通配符的使用 266
10.5.1 泛型的使用限制 266
10.5.2 通配符的使用 267
10.6 泛型的繼承和實現 268
10.7 高手點撥 269
10.8 實戰練習 270
第 11章 更強大和方便的功能——註解
11.1 註解概述 272
11.2 常用內置註解 272
11.3 自定義註解 274
11.4 通過反射訪問註解信息 277
11.5 高手點撥 280
11.6 實戰練習 282
第 12章 設計實踐——常用的設計模式
12.1 設計模式概述 284
12.1.1 設計模式的背景 284
12.1.2 設計模式的分類 284
12.2 創建型模式 285
12.2.1 單例設計模式 285
12.2.2 多例設計模式 288
12.2.3 工廠模式 290
12.3 結構型模式 295
12.3.1 代理設計模式 296
12.3.2 橋接設計模式 299
12.4 行為型模式 307
12.4.1 行為型模式概述 307
12.4.2 責任鏈設計模式 307
12.5 高手點撥 310
12.6 實戰練習 310
第 13章 存儲類的倉庫——Java常用類庫
13.1 API 概念 312
13.2 基本數據類型的包裝類 312
13.2.1 裝箱與拆箱 313
13.2.2 基本數據類型與字元串的轉換 315
13.3 String 類 317
13.3.1 字元串類的聲明 317
13.3.2 String 類中常用的方法 319
13.4 System 類與 Runtime 類 321
13.4.1 System 類 321
13.4.2 Runtime 類 324
13.5 日期操作類 326
13.5.1 日期類 326
13.5.2 日期格式化類 328
13.6 正則表達式 329
13.6.1 正則的引出 329
13.6.2 正則標記 331
13.6.3 利用String進行正則操作 332
13.7 Math與Random類 334
13.7.1 Math類的使用 334
13.7.2 Random類的使用 335
13.8 高手點撥 337
13.9 實戰練習 338
第 14章 防患於未然——異常的捕獲與處理
14.1 異常的基本概念 340
14.1.1 為何需要異常處理 340
14.1.2 簡單的異常範例 341
14.1.3 異常的處理 342
14.1.4 異常處理機制的小結 347
14.2 異常類的處理流程 348
14.3 throws關鍵字 348
14.4 throw關鍵字 350
14.5 異常處理的標準格式 350
14.6 RuntimeException類 352
14.7 編寫自己的異常類 353
14.8 高手點撥 354
14.9 實戰練習 354
下冊
第Ⅲ篇 高級套用
第 15章 齊頭並進, 並發任務的處理——多執行緒
15.1 感知多執行緒 357
15.1.1 現實生活中的多執行緒 357
15.1.2 進程與執行緒 357
15.1.3 多執行緒的優勢 358
15.2 體驗多執行緒 359
15.2.1 通過繼承Thread類實現多執行緒 360
15.2.2 通過Runnable接口實現多執行緒 362
15.2.3 兩種多執行緒實現機制的比較 364
15.2.4 Java 8中運行執行緒的新方法 367
15.3 執行緒的狀態 369
15.4 執行緒操作的一些方法 373
15.4.1 取得和設定執行緒的名稱 373
15.4.2 判斷執行緒是否啟動 376
15.4.3 守護執行緒與setDaemon方法 377
15.4.4 執行緒的聯合 378
15.4.5 如何中斷一個執行緒 380
15.5 多執行緒的同步 383
15.5.1 同步問題的引出 383
15.5.2 同步代碼塊 385
15.5.3 同步方法 386
15.5.4 死鎖 388
15.6 執行緒間通信 391
15.6.1 問題的引出 391
15.6.2 問題如何解決 392
15.7 執行緒池技術及其套用 400
15.7.1 執行緒池的概念 400
15.7.2 執行緒池的用法 401
15.8 高手點撥 407
15.9 實戰練習 408
第 16章 檔案I/O操作
16.1 輸入/輸出的重要性 410
16.2 讀寫文本檔案 411
16.2.1 File類 411
16.2.2 文本檔案的操作 414
16.2.3 字元編碼問題 417
16.3 文本的輸入和輸出 420
16.3.1 讀入文本單詞 420
16.3.2 讀入單個字元 421
16.3.3 判斷字元分類的方法 421
16.3.4 讀入一行文本 422
16.3.5 將字元轉換為數字 423
16.4 位元組流與字元流 424
16.4.1 位元組輸出流——OutputStream 425
16.4.2 位元組輸入流——InputStream 425
16.4.3 字元輸出流——Writer 428
16.4.4 字元輸入流——Reader 429
16.4.5 位元組流與字元流的轉換 431
16.5 命令行參數的使用 434
16.5.1 System類對I/O的支持 434
16.5.2 Java命令行參數解析 434
16.6 高手點撥 438
16.7 實戰練習 438
第 17章 數據持久化方法——對象序列化
17.1 對象序列化的基本概念 440
17.2 序列化與對象輸出流ObjectOutputStream 441
17.3 反序列化與對象輸入流ObjectInputStream 442
17.4 序列化對象的版本號serialVersionUID 444
17.5 transient關鍵字 445
17.6 Externalizable接口 445
17.7 高手點撥 448
17.8 實戰練習 448
第 18章 絢麗多彩的圖形界面——GUI編程
18.1 GUI概述 450
18.2 GUI與AWT 450
18.3 AWT容器 451
18.3.1 Frame視窗 452
18.3.2 Panel面板 456
18.3.3 布局管理器 457
18.4 AWT常用組件 462
18.4.1 按鈕與標籤組件 463
18.4.2 TextField文本域 465
18.4.3 圖形控制項 467
18.5 事件處理 468
18.5.1 事件處理的流程 468
18.5.2 常用的事件 469
18.5.3 小案例—會動的烏龜 474
18.6 高手點撥 477
18.7 實戰練習 478
第 19章 Swing GUI編程
19.1 Swing概述 480
19.2 Swing的基本組件 481
19.2.1 JTable表格 481
19.2.2 JComboBox下拉列表框 483
19.2.3 組件常用方法 485
19.3 Swing的套用 486
19.3.1 小案例——簡易的學籍管理系統 486
19.3.2 小案例——簡易隨機驗證碼的生成 489
19.4 高手點撥 492
19.5 實戰練習 492
第 20章 打通數據的互聯——Java Web初步
20.1 Web開發的發展歷程 494
20.1.1 靜態Web處理階段 494
20.1.2 動態Web處理階段 495
20.2 JSP的運行環境 497
20.2.1 安裝Tomcat 497
20.2.2 配置虛擬 500
20.2.3 編寫第 1個JSP程式 502
20.2.4 Tomcat執行流程 503
20.3 基礎語法 503
20.3.1 顯式注釋與隱式注釋 504
20.3.2 Scriptlet 505
20.3.3 Page指令 507
20.3.4 包含指令 509
20.3.5 跳轉指令 513
20.4 高手點撥 515
20.5 實戰練習 516
第 21章 JSP進階——內置對象與Servlet
21.1 內置對象 518
21.1.1 request對象 518
21.1.2 response對象 521
21.1.3 session對象 528
21.1.4 其他內置對象 532
21.2 Servlet 535
21.2.1 Servlet簡介 535
21.2.2 第 1個Servlet程式 535
21.2.3 Eclipse中的Servlet配置 539
21.3 高手點撥 545
21.4 實戰練習 546
第 22章 高效開發的利器——常用MVC設計框架
22.1 框架的內涵 548
22.2 Struts 開發基礎 549
22.2.1 Struts簡介 549
22.2.2 MVC的基本概念 550
22.2.3 Struts 2的工作原理 550
22.2.4 下載Struts 2 -類庫 551
22.2.5 從Struts 2的角度理解MVC 552
22.2.6 第 1個Struts 2 -實例 553
22.2.7 運行測試StrutsDemo工程 562
22.2.8 小結 563
22.3 高手點撥 564
22.4 實戰練習 564
第 23章 高效開發的利器——Spring框架
23.1 Spring快速上手 566
23.1.1 Spring基本知識 566
23.1.2 Spring框架模組 566
23.1.3 Spring開發準備 567
23.1.4 Spring框架配置 567
23.2 Spring開發實例 570
23.3 Spring和Struts結合 575
23.4 高手點撥 576
23.5 實戰練習 576
第 24章 讓你的資料庫記錄像操作變數一樣方便——Hibernate
24.1 Hibernate開發基礎 578
24.2 Hibernate開發準備 578
24.2.1 下載Hibernate開發包 578
24.2.2 在Eclipse中部署Hibernate開發環境 579
24.2.3 安裝部署MySQL驅動 579
24.3 Hibernate開發實例 580
24.3.1 開發Hibernate項目的完整流程 581
24.3.2 創建 HibernateDemo 項目 581
24.3.3 創建數據表USER 583
24.3.4 編寫 POJO 映射類 User.java 584
24.3.5 編寫映射檔案User.hbm.xml 586
24.3.6 編寫 hibernate.cfg.xml 配置檔案 586
24.3.7 編寫輔助工具類 HibernateUtil.Java 588
24.3.8 編寫DAO接口UserDAO.java 590
24.3.9 編寫DAO層實現類 591
24.3.10 編寫測試類 UserTest.java 593
24.4 高手點撥 596
24.5 實戰練習 596
第 25章 移動互聯的精彩——Android編程基礎
25.1 Android簡介 598
25.1.1 Android系統架構 598
25.1.2 Android已發布的版本 598
25.1.3 Android套用開發特色 599
25.2 搭建開發環境 599
25.2.1 準備所需要的軟體 599
25.2.2 開發環境的搭建 599
25.3 創建第 1個Android項目 601
25.3.1 創建HelloWorld項目 601
25.3.2 運行HelloWorld 602
25.3.3 解析第 1個Android程式 603
25.4 詳解基本布局 605
25.4.1 線性布局 606
25.4.2 相對布局 610
25.4.3 幀布局 613
25.4.4 TableLayout 614
25.5 常見控制項的使用方法 616
25.5.1 TextView 616
25.5.2 EditText 617
25.5.3 Button 619
25.5.4 ProgressDialog 622
25.5.5 ImageView 624
25.6 Activity詳細介紹 624
25.6.1 Activity生命周期 625
25.6.2 Activity狀態 625
25.6.3 Activity啟動模式 626
25.7 高手點撥 626
25.8 實戰練習 626
第Ⅳ篇 項目實戰
第 26章 Android項目實戰——智慧型電話回撥系統
26.1 系統概述 629
26.1.1 背景介紹 629
26.1.2 運行程式 629
26.1.3 系統需求分析 630
26.1.4 詳細功能設計 630
26.2 系統實現 630
26.2.1 主界面 630
26.2.2 修改密碼 632
26.2.3 意見反饋 634
26.3 項目功能用到的知識點講解 638
26.3.1 讀取通訊錄 638
26.3.2 讀取聯繫人頭像 642
26.3.3 讀取簡訊 642
26.4 高手點撥 644
26.5 實戰練習 644
第 27章 Android進階項目實戰——理財管理系統
27.1 系統概述 646
27.1.1 背景介紹 646
27.1.2 運行程式 646
27.1.3 系統需求分析 647
27.2 系統數據存儲的設計和實現 647
27.2.1 數據分析和設計 647
27.2.2 資料庫設計和實現 649
27.2.3 SharedPreferences存儲方式 655
27.2.4 檔案存儲方式 656
27.3 系統詳細設計和實現 657
27.3.1 歡迎界面模組設計和實現 657
27.3.2 用戶註冊登錄模組設計和實現 660
27.3.3 隨時查看記錄模組設計和實現 669
27.3.4 查看記錄模組設計和實現 674
27.3.5 預算模組設計和實現 680
27.3.6 寫心情模組設計和實現 684
27.4 系統開發經驗和技巧 694
27.4.1 項目經驗 694
27.4.2 項目技巧 694
27.5 高手點撥 694
27.6 實戰練習 694
第 28章 Java Web項目實戰——我的飯票網
28.1 系統分析 696
28.1.1 需求分析 696
28.1.2 編寫項目計畫書 696
28.2 系統設計 697
28.2.1 系統目標 697
28.2.2 系統功能設計 697
28.3 資料庫設計 697
28.3.1 功能分析 697
28.3.2 基本表設計 698
28.4 用戶註冊模組設計 701
28.4.1 用戶註冊模組概述 702
28.4.2 與用戶註冊有關的資料庫連線及操作類 702
28.4.3 用戶註冊界面設計 708
28.4.4 用戶註冊事件處理頁面 711
28.5 用戶登錄模組設計 713
28.5.1 用戶登錄模組概述 713
28.5.2 與用戶登錄有關的資料庫連線及操作類 713
28.5.3 用戶登錄界面設計 714
28.5.4 用戶登錄驗證處理頁面 716
28.6 用戶主頁面模組設計 718
28.6.1 用戶主頁面模組概述 718
28.6.2 用戶主頁面有關的資料庫連線及操作類 718
28.6.3 用戶主頁面界面設計 723
28.7 高手點撥 726
28.8 實戰練習 726
第 29章 Java Web項目實戰——客戶關係管理項目
29.1 系統概述 728
29.1.1 系統開發背景 728
29.1.2 項目開發環境的搭建 728
29.2 系統分析和設計 729
29.2.1 系統需求分析 729
29.2.2 資料庫分析和設計 730
29.3 系統架構分析和設計 734
29.3.1 分層結構和MVC模式 734
29.3.2 模式一轉為模式二的過程:登錄例子 734
29.3.3 程式的分層及層次間的關係 735
29.3.4 接口的設計和實現 736
29.3.5 VO的設計和實現 740
29.4 用戶登錄模組設計 742
29.4.1 模組需求細化 742
29.4.2 模組相關資料庫實現細節 743
29.4.3 用戶登錄界面設計 743
29.4.4 模組詳細設計和實現 746
29.5 客戶管理模組設計 750
29.5.1 模組需求細化 750
29.5.2 模組相關資料庫實現細節 751
29.5.3 客戶管理界面設計 751
29.5.4 模組詳細設計和實現 757
29.6 公告管理模組設計 766
29.6.1 模組需求細化 766
29.6.2 模組相關資料庫實現細節 766
29.6.3 公告管理界面設計 767
29.6.4 模組詳細設計和實現 771
29.7 高手點撥 780
29.8 實戰練習 780
第30章 大數據項目實戰——Hadoop下的數據處理
30.1 認識Hadoop 782
30.1.1 初識Hadoop 782
30.1.2 Hadoop平台構成 783
30.2 理解MapReduce編程範式 784
30.3 第 1個Hadoop案例——WordCount代碼詳解 785
30.3.1 WordCount基本流程 785
30.3.2 WordCount代碼詳解 786
30.3.3 運行WordCount 790
30.4 面向K-Means聚類算法的Hadoop實踐 796
30.4.1 K-Means聚類算法簡介 796
30.4.2 基於MapReduce的K-Means算法實現 798
30.5 高手點撥 806
30.6 實戰練習 806
附錄 全分散式Hadoop集群的構建
安裝CentOS 7 807
安裝Java並配置環境變數 808
安裝Hadoop 810
下載Hadoop包 810
安裝Hadoop 811
Hadoop的運行模式 811
Hadoop集群構建 811
在Windows作業系統下克隆虛擬機 812
配置虛擬機MAC地址 812
設定靜態IP位址 813
安裝和配置SSH服務 815
安裝SSH 815
SSH免密碼登錄 815
修改hosts檔案 818
虛擬機的同步配置 818
SSH免密碼登錄配置過程 819
全分布模式下配置Hadoop 819
同步配置檔案 824
創建所需 825
關閉防火牆 825
格式化檔案系統 825
啟動Hadoop守護進程 825
驗證全分布模式 826
默認配置檔案所在位置 826
關閉Hadoop 826