本書圍繞Java程序設計語言的基礎知識和JDK 1.8版本的部分新特性,采用任務驅動與項目實訓的方式,介紹如何在Eclipse開發環境下進行面向對象程序設計與應用開發。典型的實訓項目有商場打折計價、學生成績統計、可設置范圍和人數的按號抽獎、運用多線程的龜兔賽跑、關于事件處理的鼠標測試、簡易記事本、音樂播放、手動繪圖、三層結構的學生信息管理、雙人和多人聊天等程序。
本書概念清晰,層次結構合理,敘述簡明易懂,融入了作者31年計算機軟件專業學習、工作、項目開發和教學的全部經驗。每章結束前都對知識點條分縷析并用表格歸納整理。無論是編程新手,還是具有C、C++、C#或Visual Basic基礎的程序員,都可從本書中獲取新知識。本書特別適合高職高專、應用型本科的學生使用。
Java是一種功能強大的面向對象程序設計語言,是目前最流行的程序設計語言之一。本書旨在介紹Java語言基礎知識,引導讀者借助當前流行的Eclipse開發環境,學習Java語言的基本語法、學習面向對象程序設計的基本方法,開發運行在JDK 1.8版本的應用程序。學完本書之后,讀者會對Java有一個全面的認識和理解,并能運用Java語言開發商場打折計價、學生成績統計、按號碼抽獎、三層結構的學生信息管理以及雙人或多人聊天等應用程序。
全書共22章,每章包含1~2個項目任務,均從任務預覽開始,圍繞任務層層展開,深入淺出地介紹與任務有關的基本知識和基本方法。在講述基礎知識的同時注重系統性、結構性和層次性。對一些知識點會作適當的深層擴展,但由于篇幅所限,一般不作長篇大論敘述,點到為止。特別是對于復雜難懂的IO流編程,本書采用直觀簡明的示意圖進行剖析。
每章結束前有一個小結,提煉本章知識點,與操作示例一起用表格分條列出,一目了然,方便復習和查閱。每章后面都有項目實訓,讀者學習完本章,可立即上機實踐,以鞏固所學知識。我們深知,知識可以學習,但技能不能單靠學習,要靠實際操作,才能逐步養成、積累和掌握。
考慮到初學者學習過程的循序漸進性,在實訓項目中,會給出框架性的代碼供參考,而大部分代碼需要讀者在理解、融會本章知識點的情況下,自行編寫、調試程序。
本書既講述知識點,又列舉有價值、有代表性且容易明白的例子。每章盡可能圍繞一個具體案例進行剖析。本書絕大部分項目和例子是編者多年應用開發和教學工作的積累和總結,融入了程序設計和軟件開發的基本方法和技巧。
總之,任務驅動和項目實訓是本書第一個特色; 對知識點條分縷析并用表格歸納整理是本書第二個特色。
在本書編寫過程中,得到各級領導和軟件行業專家的大力支持、幫助和鼓舞,在此特別感謝IT行業教授級高工朱繼文先生、技術總監葉世淳先生、高級經理洪立思先生、研究員藍方勇先生,還有魚濱教授和凌應標副教授!
在編書過程中,筆者還得到不少學生的幫助和啟發,他們朝氣蓬勃、思維活躍,是未來IT行業的棟梁,感謝黃哲法、潘司然、梁瑞熙等同學的熱情幫助!
由于編者水平有限,書中難免有疏漏之處,敬請讀者批評指正。編者的電子郵箱是wangzl@gdsdxy.cn。
本書配套網絡資源包括PPT和項目源代碼,使用本書的教師可直接登錄清華大學出版社網站(www.tup.tsinghua.edu.cn)獲取。
編者
2015年6月
第1章您好——Java入門
1.1任務預覽
1.2Java語言概述
1.3建立Java開發環境
1.3.1Java開發工具包JDK
1.3.2集成開發環境Eclipse
1.4Java開發步驟
1.4.1記事本加JDK開發步驟
1.4.2Eclipse開發步驟
1.5本章小結
1.6實訓1: 您好
1.7實訓報告樣板
第2章計算器——數據類型與表達式
2.1任務預覽
2.2標識符
2.3關鍵字
2.4變量
2.5基本數據類型
2.6字符串及其與數值的轉換
2.7算術運算符及算術表達式、字符串連接符
2.8賦值運算符、賦值表達式及賦值語句
2.9運算符的優先級與結合性
2.10自增和自減運算符
2.11語句與方法
2.12本章小結
2.13實訓2: 簡易計算器
第3章計算面積周長——方法與作用域
3.1任務預覽
3.2方法定義
3.3方法調用
3.4在命令行窗口輸入輸出數據
3.4.1輸入數據
3.4.2輸出數據
3.5方法簽名與方法重載
3.6方法參數值傳遞——單向傳遞
3.7變量作用域
3.7.1局部變量作用域
3.7.2字段作用域
3.8本章小結
3.9實訓3: 計算圓、矩形面積和周長
第4章打折計價——邏輯值與分支結構
4.1任務預覽
4.2邏輯值
4.3關系運算符與關系表達式
4.4邏輯運算符與邏輯表達式
4.5程序基本控制結構
4.5.1順序結構
4.5.2分支結構
4.5.3循環結構
4.6if語句
4.7switch(多分支)語句
4.8三目條件運算符
4.9本章小結
4.10實訓4: 打折計價、顯示星座、判斷成績等級
第5章累加與階乘——循環結構
5.1任務預覽
5.2while語句
5.3復合賦值運算符
5.4for語句
5.5遞歸調用方法
5.6dowhile語句
5.7break和continue語句
5.8多重循環
5.9本章小結
5.10實訓5: 累加、階乘與乘法表
第6章除法運算——異常處理
6.1任務預覽
6.2異常
6.3異常種類與層次結構
6.4異常處理代碼塊trycatchfinally
6.5throw語句與throws子句
6.6自定義異常類
6.7異常處理代碼塊嵌套
6.8錯誤與斷言
6.9本章小結
6.10實訓6: 除法運算程序
第7章圓和矩形——類與對象
7.1任務預覽
7.2定義類
7.3構造方法及其重載
7.4訪問控制修飾符
7.4.1類修飾符public
7.4.2類成員修飾符public、protected和private
7.5靜態成員和實例成員
7.5.1使用static聲明靜態成員
7.5.2實例成員與關鍵字this
7.6使用final
7.6.1使用final聲明常量
7.6.2使用final聲明方法
7.6.3使用final聲明類
7.7程序舉例
7.8本章小結
7.9實訓7: 構建圓和矩形對象
第8章動物類派生——繼承與多態
8.1任務預覽
8.2繼承與派生
8.3用protected聲明受保護成員
8.4關鍵字super
8.4.1用super調用父類構造方法
8.4.2用super訪問父類字段和方法
8.5類類型變量賦值
8.5.1子類對象的上轉型對象
8.5.2子類變量不能直接引用父類對象
8.5.3兄弟類對象不能相互替換
8.6多態性
8.6.1方法重寫
8.6.2方法重載
8.7本章小結
8.8實訓8: 學生類繼承人類與動物多態性
第9章實現抽象圖形——接口與包
9.1任務預覽
9.2抽象方法與抽象類
9.2.1抽象方法與抽象類
9.2.2對比抽象類(方法)與最終類(方法)
9.3接口類型
9.3.1接口定義與實現
9.3.2通過接口來引用類——接口多態
9.4接口多重繼承與實現
9.4.1接口多重繼承
9.4.2類實現多個接口
9.5包
9.5.1Java系統API包
9.5.2定義包
9.5.3引入包
9.6本章小結
9.7實訓9: 實現圖形接口
第10章成績統計——數組與字符串
10.1任務預覽
10.2數組
10.2.1聲明數組變量
10.2.2創建數組實例
10.2.3訪問數組元素
10.2.4數組聲明、創建、元素賦值三合一
10.3多維數組
10.4數組操作與數組封裝類Arrays
10.4.1數組遍歷
10.4.2數組排序
10.4.3數組復制
10.5引用類型作方法參數——地址傳遞
10.6數組參數與可變數目參數方法
10.6.1數組參數方法
10.6.2可變數目參數方法
10.7字符串類
10.7.1不變字符串類String
10.7.2字符串緩沖區類StringBuffer
10.7.3字符串生成器類StringBuilder
10.8正則表達式與字符串匹配
10.9本章小結
10.10實訓10: 最大最小值與成績統計
第11章抽獎——隨機數與枚舉
11.1任務預覽
11.2隨機數與Random類
11.3枚舉類型
11.4本章小結
11.5實訓11: 抽獎
第12章文件讀寫——輸入輸出流
12.1任務預覽
12.2數據流
12.3文件輸入輸出流
12.3.1FileReader與FileWriter
12.3.2FileInputStream與FileOutputStream
12.4文件對話框與常用對話框
12.5隨機訪問文件流RandomAccessFile
12.6序列化與對象輸入輸出
12.7緩沖輸入輸出流與格式化輸出流
12.7.1緩沖流BufferedReader和BufferedWriter
12.7.2格式化字符輸出流PrintWriter
12.8本章小結
12.9實訓12: 文件復制與對象讀寫
第13章龜兔賽跑——多線程
13.1任務預覽
13.2程序、進程與線程
13.3多線程
13.3.1構建Thread子類對象
13.3.2用實現Runnable接口對象構建Thread
13.4線程類Thread
13.4.1Thread類構造方法及線程名
13.4.2線程優先級與Thread相關字段
13.4.3線程生命周期與線程狀態
13.4.4線程其他方法
13.5線程同步與互斥
13.5.1同步關鍵字synchronized
13.5.2生產者與消費者模型
13.6本章小結
13.7實訓13: 龜兔賽跑、生產者與消費者
第14章元素增刪檢索——集合與泛型
14.1任務預覽
14.2集合框架與泛型
14.3集合分類與元素增刪改
14.3.1集合根接口Collection<E>與元素遍歷
14.3.2列表接口List<E>與Vector<E>和ArrayList<E>類
14.3.3無重復元素集合接口Set<E>
14.3.4隊列接口Queue<E>
14.4集合封裝類Collections
14.5數據封裝類與自動裝箱拆箱
14.5.1基本類型與數據封裝類
14.5.2自動裝箱和自動拆箱
14.6鍵/值映射與映射類
14.6.1映射接口Map<K,V>
14.6.2哈希表Hashtable<K,V>與哈希映射HashMap<K,V>
14.6.3樹映射類TreeMap<K,V>
14.7本章小結
14.8實訓14: 學生屬性增刪改與鍵/值檢索
第15章愛好選擇——圖形用戶界面
15.1任務預覽
15.2圖形用戶界面及其組件
15.2.1java.awt包與重量級組件
15.2.2javax.swing包與輕量級組件
15.2.3組件類繼承關系
15.3容器
15.3.1容器根類Container
15.3.2JFrame窗體
15.3.3JDialog對話框
15.3.4JPanel面板
15.4常用組件
15.4.1JLabel標簽與ImageIcon圖像圖標
15.4.2JButton按鈕
15.4.3JTextField文本框與JPasswordField密碼框
15.4.4JCheckBox復選框
15.4.5JRadioButton單選按鈕與ButtonGroup按鈕組
15.5本章小結
15.6實訓15: 興趣愛好選擇程序
第16章鼠標測試——布局與事件
16.1任務預覽
16.2布局
16.2.1BorderLayout邊界布局
16.2.2FlowLayout流動布局
16.2.3GridLayout網格布局
16.2.4CardLayout卡片布局與幻燈片播放
16.2.5null空布局
16.3事件
16.3.1事件處理模型
16.3.2事件類、監聽接口/適配器類及方法
16.4事件適配器與鼠標事件
16.5選項事件與列表選擇事件
16.5.1JComboBox<E>下拉組合框
16.5.2JList<E>列表框
16.5.3JTextArea文本區
16.5.4JScrollPane滾動窗格與JViewport視口
16.6本章小結
16.7實訓16: 鼠標測試
第17章簡易記事本——工具欄與菜單
17.1任務預覽
17.2JToolBar工具欄
17.3菜單
17.3.1JMenuBar菜單欄
17.3.2JMenu菜單
17.3.3JMenuItem菜單項
17.4JPopupMenu彈出菜單
17.5簡易記事本
17.6本章小結
17.7實訓17: 簡易記事本
第18章音樂播放——小程序
18.1任務預覽
18.2小程序
18.3生命周期與常用方法
18.4播放聲音
18.5網頁傳值
18.6繪制圖像
18.7狀態欄動態顯示時間
18.8本章小結
18.9實訓18: 音樂播放與時間顯示
第19章繪圖——窗體與畫布
19.1任務預覽
19.2窗體繪圖
19.2.1圖形上下文類Graphics
19.2.2工具包類Toolkit
19.2.3在窗體中手動繪圖
19.3顏色與字體
19.3.1顏色類Color
19.3.2顏色選擇器類JColorChooser及其對話框
19.3.3字體類Font
19.4Canvas畫布繪圖
19.5光標類Cursor
19.6本章小結
19.7實訓19: 手動繪圖
第20章動畫——圖形界面綜合應用
20.1任務預覽
20.2氣球飄飄
20.3圖像幻燈片
20.4動畫
20.5本章小結
20.6實訓20: 編寫動畫程序
第21章學生管理——三層結構數據庫編程
21.1任務預覽
21.2建立數據庫
21.2.1在DBMS上建立數據庫
21.2.2運行SQL腳本建立數據庫
21.3連接數據庫
21.3.1下載驅動jar包并加載JDBC驅動程序
21.3.2由DriverManager類建立數據庫連接
21.3.3Connection連接與創建語句方法
21.4訪問數據庫
21.4.1數據庫編程步驟
21.4.2Statement語句及其執行方法
21.4.3PreparedStatement預編譯語句及其執行方法
21.4.4ResultSet結果集
21.5三層結構應用程序概述
21.6三層結構學生信息管理程序
21.6.1對象/關系映射
21.6.2實體類與JavaBean
21.6.3數據層
21.6.4業務邏輯層
21.6.5表示層
21.7打包發布程序
21.8本章小結
21.9實訓21: 三層結構學生信息管理程序
第22章聊天——網絡編程
22.1任務預覽
22.2基于UDP協議的網絡通訊
22.2.1IP地址類InetAddress
22.2.2數據報套接字類DatagramSocket
22.2.3數據報包類DatagramPacket
22.2.4基于UDP協議網絡編程步驟
22.3基于TCP協議的網絡通訊
22.3.1基于TCP協議網絡編程步驟
22.3.2服務器套接字類ServerSocket
22.3.3套接字類Socket
22.3.4TCP協議和UDP協議通訊特征比較
22.4本章小結
22.5實訓22: 編寫網絡聊天程序