本書分為10個部分,共30章,涵蓋了Java入門、程序設計基礎、面向對象編程、API、GUI開發、圖形開發、網絡編程、密碼編程、反射和綜合案例。本書基于JDK 1.8+Eclipse 4.6.0開發環境,逐步引領讀者從基礎到各個知識點的學習。全書內容由淺入深,并輔以大量的實例說明,還階段性地提供了一些實踐指導。
本書提供了所有實例的源代碼以及開發過程中用到的軟件,供讀者學習參考。
本書為學校教學量身定做,可供高校Java開發相關課程使用,也可作為沒有Java開發基礎的程序員的入門用書,更可作為Java培訓班的培訓教材,還可以幫助缺乏項目實戰經驗的程序員快速積累項目開發經驗。
實戰性。所有內容都用案例引入,通俗易懂。流行性。書中講解的都是JavaSE開發過程中*流行的方法、框架、模式等。緊扣學生的就業。適合教學。書中每一個章節安排適當,將習題融于講解的過程中,教師可以根據情況選用,也可以進行適當增減。
目錄
第1章Java入門
本章術語
1.1認識Java
1.1.1認識編程語言
1.1.2Java的來歷
1.1.3Java為什么流行
1.1.4Java的3個版本
1.1.5編程前的準備工作
1.2獲取和安裝JDK
1.2.1獲取JDK
1.2.2安裝JDK
1.2.3安裝目錄的介紹
1.2.4環境變量的設置
1.3開發第一個Java程序
1.3.1如何編寫源代碼
1.3.2如何將源代碼編譯成.class文件
1.3.3如何執行.class文件
1.3.4新手常見錯誤
1.4用Eclipse開發Java程序
1.4.1什么是Eclipse
1.4.2安裝Eclipse
1.4.3如何建立項目
1.4.4如何開發Java程序
1.4.5如何維護項目
本章知識體系
第2章程序設計基礎之變量及其運算
本章術語
2.1認識變量
2.1.1什么是變量
2.1.2變量有哪些類型
2.2如何使用變量
2.2.1如何使用整型變量
2.2.2如何使用浮點型變量
2.2.3如何使用字符型變量
2.2.4如何使用布爾型變量
2.2.5基本數據類型之間的類型轉換
2.2.6基本數據類型和字符串之間的轉換
2.2.7變量的作用范圍
2.3注釋的書寫
2.3.1單行注釋
2.3.2多行注釋
2.3.3文檔注釋
2.4Java中的運算
2.4.1算術運算
2.4.2賦值運算
2.4.3關系運算
2.4.4邏輯運算
2.4.5運算符的優先級
本章知識體系
第3章程序設計基礎之流程控制和數組
本章術語
3.1判斷結構
3.1.1為什么需要判斷結構
3.1.2if結構
3.1.3switch結構
3.2認識循環結構
3.2.1為什么需要循環結構
3.2.2while循環
3.2.3dowhile循環
3.2.4for循環
3.2.5循環嵌套
3.2.6break語句和continue語句
3.3數組
3.3.1為什么需要數組
3.3.2如何定義數組
3.3.3如何使用數組
3.3.4數組的引用性質
3.3.5數組的應用
3.3.6多維數組
本章知識體系
第4章實踐指導1
本章術語
4.1關于變量和數據類型的實踐
4.2流程控制和數組的綜合實踐
第5章面向對象編程(一)
本章術語
5.1認識類和對象
5.1.1為什么需要類
5.1.2如何定義類
5.1.3如何使用類實例化對象
5.1.4如何訪問對象中的成員變量
5.1.5對象的引用性質
5.2認識成員函數
5.2.1為什么需要函數
5.2.2如何定義和使用成員函數
5.2.3函數參數的傳遞
5.2.4認識函數重載
5.3認識構造函數
5.3.1為什么需要構造函數
5.3.2如何定義和使用構造函數
本章知識體系
第6章面向對象編程(二)
本章術語
6.1靜態變量和靜態函數
6.1.1為什么需要靜態變量
6.1.2靜態變量的常見應用
6.1.3認識靜態函數
6.1.4靜態代碼塊
6.2使用封裝
6.2.1為什么需要封裝
6.2.2如何實現封裝
6.3使用包
6.3.1為什么需要包
6.3.2如何將類放在包中
6.3.3如何訪問包中的類
6.4使用訪問控制修飾符
6.4.1什么是訪問控制修飾符
6.4.2類的訪問控制修飾符
6.4.3成員的訪問控制修飾符
6.5使用類中類
本章知識體系
第7章面向對象編程(三)
本章術語
7.1使用繼承
7.1.1為什么需要繼承
7.1.2如何實現繼承
7.1.3繼承的底層本質
7.2成員的覆蓋
7.2.1什么是成員覆蓋
7.2.2成員覆蓋有何作用
7.3使用多態性
7.3.1什么是多態
7.3.2如何使用多態性
7.3.3父類和子類對象的類型轉換
7.4抽象類和接口
7.4.1為什么需要抽象類
7.4.2為什么需要接口
7.5其他內容
7.5.1final關鍵字
7.5.2Object類
7.6一些工具的使用
7.6.1將字節碼打包發布
7.6.2文檔的使用
本章知識體系
第8章實踐指導2
本章術語
8.1單例模式的設計
8.1.1需求簡介
8.1.2不用單例模式的效果
8.1.3最原始的單例模式
8.1.4首次改進
8.1.5再次改進
8.1.6思考題
8.2利用繼承和多態擴充程序功能
8.2.1需求簡介
8.2.2實現方法
8.2.3出現的問題
8.2.4改進
8.2.5測試
第9章Java異常處理
本章術語
9.1認識異常
9.1.1生活中的異常
9.1.2軟件中的異常
9.1.3為什么要處理異常
9.1.4異常的機理
9.1.5常見異常
9.2異常的就地捕獲
9.2.1為什么要就地捕獲
9.2.2如何就地捕獲異常
9.2.3如何捕獲多種異常
9.2.4用finally保證安全性
9.3異常的向前拋出
9.3.1為什么要向前拋出
9.3.2如何向前拋出
9.4自定義異常
9.4.1為什么需要自定義異常
9.4.2如何自定義異常
本章知識體系
第10章Java常用API(一)
本章術語
10.1數值運算
10.1.1用Math類實現數值運算
10.1.2實現隨機數
10.2用String類進行字符串處理
10.3用StringBuffer類進行字符串處理
10.4基本數據類型的包裝類
10.4.1認識包裝類
10.4.2通過包裝類進行數據類型轉換
10.5常用系統類
10.5.1認識System類
10.5.2認識Runtime類
本章知識體系
第11章Java常用API(二)
本章術語
11.1認識Java集合
11.1.1為什么需要集合
11.1.2Java中的集合
11.2使用一維集合
11.2.1認識一維集合
11.2.2使用List集合
11.2.3使用Set集合
11.2.4使用Collections類對集合進行處理
11.2.5使用泛型簡化集合操作
11.3Java中的二維集合
11.3.1使用Map集合
11.3.2使用Hashtable和Properties
11.4日期操作
11.4.1認識Date類
11.4.2認識Calendar類
11.4.3如何格式化日期
11.4.4更進一步: 如何格式化數值
本章知識體系
第12章Java多線程開發
本章術語
12.1認識多線程
12.1.1為什么需要多線程
12.1.2繼承Thread類開發多線程
12.1.3實現Runnable接口開發多線程
12.1.4兩種方法有何區別
12.2控制線程的運行
12.2.1為什么要控制線程的運行
12.2.2傳統方法的安全問題
12.2.3如何控制線程的運行
12.3線程協作安全
12.3.1什么是線程協作
12.3.2一個有問題的案例
12.3.3如何解決
12.4線程同步安全
12.4.1什么是線程同步
12.4.2一個有問題的案例
12.4.3如何解決
12.4.4小心線程死鎖
12.5認識定時器
12.5.1為什么需要定時器
12.5.2如何使用定時器
本章知識體系
第13章Java IO操作
本章術語
13.1認識IO操作
13.2用File類操作文件
13.2.1認識File類
13.2.2使用File類操作文件
13.2.3使用File類操作目錄
13.3字節流的輸入與輸出
13.3.1認識字節流
13.3.2如何讀寫文件
13.3.3如何讀寫對象
13.4字符流的輸入與輸出
13.4.1認識字符流
13.4.2如何讀寫文件
13.4.3如何進行鍵盤輸入
13.5和IO操作相關的其他類
13.5.1用RandomAccessFile類進行文件的讀寫
13.5.2使用Properties類
本章知識體系
第14章實踐指導3
本章術語
14.1字符頻率統計軟件
14.1.1軟件功能簡介
14.1.2重要技術
14.1.3項目結構
14.1.4代碼的編寫
14.1.5思考題
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.3.3代碼的編寫
14.3.4思考題
第15章用Swing開發GUI程序
本章術語
15.1認識GUI和Swing
15.1.1什么是GUI
15.1.2什么是Swing
15.2使用窗口
15.2.1用JFrame類開發窗口
15.2.2用JDialog類開發窗口
15.3使用控件
15.3.1什么是控件
15.3.2標簽、按鈕、文本框和密碼框
15.3.3單選按鈕、復選框和下拉列表框
15.3.4菜單
15.3.5使用JOptionPane
15.3.6其他控件
15.4顏色、字體和圖片
15.4.1如何使用顏色
15.4.2如何使用字體
15.4.3如何使用圖片
15.5幾個有用的功能
15.5.1如何設置界面的顯示風格
15.5.2如何獲取屏幕大小
15.5.3如何用默認應用程序打開文件
15.5.4如何將程序顯示為系統托盤
本章知識體系
第16章Java界面布局管理
本章術語
16.1認識布局管理
16.1.1為什么需要布局管理
16.1.2認識LayoutManager
16.2使用FlowLayout
16.2.1什么是FlowLayout
16.2.2如何使用FlowLayout
16.3使用GridLayout
16.3.1什么是GridLayout
16.3.2如何使用GridLayout
16.4使用BorderLayout
16.4.1什么是BorderLayout
16.4.2如何使用BorderLayout
16.5一個綜合案例: 計算器
16.5.1案例需求
16.5.2關鍵技術
16.5.3代碼的編寫
16.6使用空布局
16.6.1什么是空布局
16.6.2如何使用空布局
本章知識體系
第17章Java事件處理
本章術語
17.1認識事件處理
17.1.1什么是事件
17.1.2事件處理代碼的編寫
17.1.3另外幾種編程風格
17.2處理ActionEvent
17.2.1什么情況發出ActionEvent
17.2.2使用ActionEvent解決實際問題
17.3處理FocusEvent
17.3.1什么情況發出FocusEvent
17.3.2使用FocusEvent解決實際問題
17.4處理KeyEvent
17.4.1什么情況發出KeyEvent
17.4.2使用KeyEvent解決實際問題
17.5處理MouseEvent
17.5.1什么情況發出MouseEvent
17.5.2使用MouseEvent解決實際問題
17.6處理WindowEvent
17.6.1什么情況發出WindowEvent
17.6.2使用WindowEvent解決實際問題
17.7使用Adapter簡化開發
本章知識體系
第18章實踐指導4
本章術語
18.1用戶管理系統功能簡介
18.2關鍵技術
18.2.1如何組織界面
18.2.2如何訪問文件
18.2.3如何保持狀態
18.2.4還有哪些公共功能
18.3代碼的編寫
18.3.1編寫util包中的類
18.3.2編寫frame包中的類
18.3.3編寫主函數所在的類
18.4思考題
第19章Java畫圖之基礎知識
本章術語
19.1認識Java畫圖
19.1.1為什么要學習畫圖
19.1.2如何實現畫圖
19.2用Graphics畫圖
19.2.1什么是Graphics
19.2.2如何使用Graphics
19.2.3用Graphics實現畫圖
19.2.4一個綜合案例
19.3畫字符串
19.3.1為什么需要畫字符串
19.3.2如何畫字符串
19.3.3案例: 產生驗證碼
19.4畫圖片
19.4.1為什么需要畫圖片
19.4.2如何畫圖片
19.4.3如何進行圖片的裁剪和縮放
19.4.4如何進行圖片的旋轉
本章知識體系
第20章Java畫圖之高級知識
本章術語
20.1結合鍵盤事件進行畫圖
20.1.1實例需求
20.1.2復習鍵盤事件
20.1.3代碼的編寫
20.1.4解決重畫問題
20.2結合鼠標事件進行畫圖
20.2.1實例需求
20.2.2復習鼠標事件
20.2.3代碼的編寫
20.3動畫制作
20.3.1實例需求
20.3.2關鍵技術
20.3.3代碼的編寫
20.3.4如何使用雙緩沖保存圖片到文件
本章知識體系
第21章實踐指導5
本章術語
21.1卡通時鐘
21.1.1軟件功能簡介
21.1.2重要技術
21.1.3代碼的編寫
21.1.4思考題
21.2拼圖游戲
21.2.1軟件功能簡介
21.2.2重要技術
21.2.3代碼的編寫
21.2.4思考題
第22章用TCP開發網絡應用程序
本章術語
22.1認識網絡編程
22.1.1什么是網絡應用程序
22.1.2認識IP地址和端口
22.1.3客戶端和服務器
22.2用客戶端連接到服務器
22.2.1案例介紹
22.2.2如何實現客戶端連接到服務器
22.2.3代碼的編寫
22.3利用TCP實現雙向聊天系統
22.3.1案例介紹
22.3.2如何實現雙向聊天
22.3.3代碼的編寫
22.4利用TCP實現多客戶聊天系統
22.4.1案例介紹
22.4.2編寫服務器程序
22.4.3編寫客戶端程序
本章知識體系
第23章用UDP開發網絡應用程序
本章術語
23.1利用UDP實現雙向聊天系統
23.1.1案例介紹
23.1.2服務器和客戶端是如何交互的
23.1.3如何收發信息
23.1.4代碼的編寫
23.2利用UDP實現多客戶聊天系統
23.2.1案例介紹
23.2.2編寫服務器程序
23.2.3編寫客戶端程序
本章知識體系
第24章URL編程和Applet開發
本章術語
24.1認識URL編程
24.1.1什么是URL
24.1.2認識URL類
24.1.3如何獲取網頁的內容
24.2認識Applet
24.2.1什么是Applet
24.2.2如何開發Applet
24.2.3如何使用Applet
24.3深入理解Applet
24.3.1Applet是如何運行的
24.3.2Applet功能的限制
24.3.3如何向Applet內傳參數
本章知識體系
第25章實踐指導6
本章術語
25.1網絡打字游戲功能簡介
25.2關鍵技術
25.2.1如何組織界面
25.2.2客戶端如何掉下字母
25.2.3客戶端如何實現加減分數
25.2.4客戶端如何判斷輸了
25.3代碼的編寫
25.3.1服務器端
25.3.2客戶端
第26章Java加密和解密
本章術語
26.1認識加密
26.1.1為什么需要加密
26.1.2認識加密算法和密鑰
26.2實現對稱加密
26.2.1什么是對稱加密
26.2.2用Java實現對稱加密
26.3實現非對稱加密
26.3.1什么是非對稱加密
26.3.2用Java實現非對稱加密
26.4實現單向加密
26.4.1什么是單向加密
26.4.2用Java實現MD5
本章知識體系
第27章Java數字簽名
本章術語
27.1認識數字簽名
27.1.1為什么需要數字簽名
27.1.2數字簽名的過程
27.2實現數字簽名
27.2.1發送方生成簽名
27.2.2接收方驗證簽名
27.3利用數字簽名解決實際問題
27.3.1解決篡改問題
27.3.2解決抵賴問題
本章知識體系
第28章Java反射技術
本章術語
28.1為什么要學習反射
28.1.1引入配置文件
28.1.2配置文件遇到的問題
28.2認識Class類
28.2.1什么是Class類
28.2.2如何獲取一個類對應的Class對象
28.2.3如何獲取類中的成員信息
28.3通過反射機制訪問對象
28.3.1如何實例化對象
28.3.2如何給成員變量賦值
28.3.3如何調用成員函數
28.4何時使用反射
本章知識體系
第29章用反射技術編寫簡單的框架
本章術語
29.1什么是框架
29.2動態異常處理框架
29.2.1框架功能簡介
29.2.2重要技術
29.2.3框架代碼的編寫
29.2.4使用該框架
29.3動態對象組裝框架
29.3.1框架功能簡介
29.3.2引入工廠
29.3.3引入配置文件
29.3.4重要技術
29.3.5框架代碼的編寫
29.3.6使用該框架
第30章綜合案例:用TCP技術開發即時通信軟件
本章術語
30.1即時通信軟件功能簡介
30.1.1服務器界面
30.1.2客戶的登錄和注冊
30.1.3消息收發界面
30.1.4在線名單的刷新
30.2項目關鍵技術
30.2.1傳輸消息如何表示
30.2.2客戶信息如何表示
30.2.3客戶文件如何保存在服務器端
30.2.4如何讀寫客戶文件
30.2.5基本模塊結構
30.3編寫服務器端
30.3.1準備工作
30.3.2編寫app.Server類
30.3.3編寫app.ChatThread類
30.3.4編寫main.Main類
30.4編寫客戶端
30.4.1準備工作
30.4.2編寫app.LoginFrame類
30.4.3編寫app.ChatFrame類
30.4.4編寫app.RegisterFrame類
30.4.5編寫main.Main類
30.5思考題