本書以Java SE 6為基礎,按照從面向對象的語言走進面向對象的思想、利用圖表增強文字的表現力、注重知識的原理性的編寫思想,詳細敘述了Java語言的基礎知識,面向對象的封裝、類、繼承、多態(tài)性,Java常用工具類、集合、異常處理,及圖形用戶界面、多線程、輸入/輸出流、JDBC等內容。
Java語言的生命力毋庸置疑,1991年由Sun公司(后被Oracle公司收購)開發(fā)。2014年,Java發(fā)布了Java SE 8版本,它以優(yōu)秀的性質馳騁在各個領域,以開源建設的方式不斷地為其注入新鮮血液。思考了許久怎樣寫此書才能打好Java的根基,為今后Struts、Spring、EJB等的學習奠定堅實的基礎;如何能讓年輕的學習者們輕松、高效地完成學習,不會感覺代碼是枯燥冰冷的字符,而是悅動在指尖的一串串的音符…。帶著讓學習者以享受的姿態(tài)步入Java程序員行列的希冀,最終確定了如下編寫思想。
。1)從面向對象的語言走進面向對象的思想任何一門計算機語言的學習都不僅僅是熟知語法的過程。計算機語言的語法就如音樂中的音符,它們會在不同人的筆下誕生奇妙的樂譜,那是作曲家賦予音符的靈魂。面向對象的思想就是面向對象語言的靈魂。
本書在講述Java語法知識的同時,更注重面向對象思想的學習和貫徹。從面向對象分析出發(fā),使用面向對象工具UML類圖描述類結構及類與類之間的關系;在系統(tǒng)設計和組織程序架構時,引入面向對象設計中的經典原則和設計模式。從學習伊始就培養(yǎng)面向對象的視角和規(guī)范的編程方式,不僅要寫出代碼,而且要寫出專業(yè)、漂亮的代碼。
。2)使用圖表增強文字的表現力相對于文字而言,圖可以更形象、立體地展示知識及彼此間的聯系,表可以梳理、對比相關、相似的知識點。相信讀者間都會有一種共識,如果面對一份長篇大論,那么你的關注點首先會集中到穿插在文字中的圖或表,因為從圖表中可以快速提取到文字的主旨、脈絡和精華;而且我也在猜想,從小看漫畫長大的年輕一代會對圖表具有更高的敏感度。
本書盡可能地為抽象、不易單純通過語言表述清楚、信息量大、知識龐雜的部分設計了圖表,力求簡明扼要地展示知識結構。
另外,本書各章都使用思維導圖從更高的角度對整章知識、案例進行了梳理,將看似零散的文字濃縮在一張圖中,提綱挈領,將知識從點連接成線,再構建為面,最終立體化,達到讀書“從物理上將書變厚,從邏輯上將書變薄”的效果。
。3)知其然亦知其所以然堅實的基礎是進階的基石。本書注重知識背后隱藏的原理和細節(jié),培養(yǎng)讀者從why和how的角度構建學習的習慣,使學習不僅知其然,更能做到知其所以然,以扎實的基本功為后續(xù)的學習打好根基。本書架構如下:
本書由宋晏、楊國興主編,胡倩茹(河北大學)、陳曉美副主編,參加編寫工作的還有劉勇、嚴婷、呂東艷、朱紅、張子萍、張小靜。
由于時間倉促,書中難免有疏漏和不足之處,敬請廣大讀者批評指正。
機工授權書
前言
第1章Java程序設計概述
1.1Java程序平臺
1.2Java的特性
1.3Java程序設計環(huán)境
1.3.1下載、安裝和了解JDK
1.3.2集成開發(fā)環(huán)境Eclipse
1.4Java應用程序
1.4.1Java應用程序的編寫
1.4.2命令行方式下的編譯和運行
1.4.3使用Eclipse開發(fā)Java程序
1.5習題
1.6實驗指導
1.7本章思維導圖第2章Java語言基礎
2.1標識符和關鍵字
2.2基本數據類型與變量、常量
2.2.1Java中的整數類型
2.2.2Java中的字符類型
2.2.3浮點類型
2.2.4布爾類型
2.2.5符號常量
2.3運算符
2.3.1算術運算符
2.3.2關系運算符和邏輯運算符
2.3.3位運算符
2.3.4賦值運算符
2.3.5運算符的優(yōu)先級與結合性
2.4表達式的類型轉換
2.4.1數據類型自動轉換的規(guī)則
2.4.2強制類型轉換
2.5流程控制
2.5.1if語句
2.5.2switch語句
2.5.3while循環(huán)語句
2.5.4for循環(huán)語句
2.5.5do-while循環(huán)語句
2.5.6break語句
2.5.7循環(huán)的嵌套
2.6方法
2.6.1方法的定義
2.6.2方法的重載
2.7綜合實踐——簡易算術計算器
2.8習題
2.9實驗指導
2.10本章思維導圖第3章數組
3.1聲明數組
3.2創(chuàng)建數組對象
3.3使用數組
3.3.1數組元素的引用
3.3.2Java方法中的不定長參數與數組
3.4多維數組
3.4.1二維數組的聲明和創(chuàng)建
3.4.2不規(guī)則二維數組
3.4.3二維數組元素的引用
3.5Java中的for each循環(huán)
3.6Arrays類
3.6.1sort()方法
3.6.2copyOf()方法
3.7綜合實踐——學生成績查詢系統(tǒng)
3.7.1查詢系統(tǒng)的數據結構
3.7.2模塊化設計
3.7.3控制臺命令的讀取和控制run()
3.7.4查詢某人某門課成績get()
3.8習題
3.9實驗指導
3.10探究與實踐——兩人對弈的五子棋游戲
3.11本章思維導圖第4章封裝與類
4.1封裝的意義
4.2定義類
4.2.1面向對象的分析
4.2.2使用class定義類
4.3對象和引用
4.3.1對象和引用的關系
4.3.2this引用
4.4方法的參數傳遞
4.5關于static
4.5.1static成員
4.5.2變量的使用規(guī)則
4.5.3static代碼塊
4.5.4類常量的定義
4.6包
4.6.1包的創(chuàng)建
4.6.2類的導入
4.6.3含包定義的類的編譯及執(zhí)行
4.6.4classpath環(huán)境變量的設置
4.6.5Eclipse下創(chuàng)建package
4.7綜合實踐——酒店前臺客房管理系統(tǒng)
4.7.1類的設計——組合關系
4.7.2客房編號的處理方法
4.7.3Room類設計
4.7.4Hotel類設計
4.7.5客戶端Client類實現
4.8習題
4.9實驗指導
4.10本章思維導圖第5章類的繼承
5.1繼承
5.1.1繼承的概念
5.1.2繼承的實現
5.1.3類成員的訪問控制
5.2重寫父類方法
5.2.1重寫及其意義
5.2.2Object類與重寫toString()方法
5.2.3調用父類被重寫的方法
5.2.4Object類的clone()方法與深、淺復制
5.3子類對象的構造
5.3.1子類對象的構造過程
5.3.2super與this調用構造方法
5.4Java修飾符
5.4.1final修飾符
5.4.2Java修飾符之間的關系
5.5繼承和組合
5.5.1繼承復用
5.5.2組合復用
5.6習題
5.7實驗指導
5.8本章思維導圖第6章多態(tài)性
6.1多態(tài)
6.1.1多態(tài)性
6.1.2靜態(tài)綁定和動態(tài)綁定
6.1.3instanceof運算符
6.2抽象類
6.2.1抽象類及抽象方法的定義
6.2.2為什么設計抽象類
6.2.3開閉原則
6.3接口
6.3.1接口的定義和實現
6.3.2接口與抽象類的區(qū)別
6.4面向接口的編程
6.4.1案例分析
6.4.2面向接口編程的代碼組織
6.5綜合實踐——格式化輸出學生對象數據
6.5.1系統(tǒng)架構
6.5.2面向接口編程的代碼
6.6習題
6.7實驗指導
6.8思維導圖
6.8.1本章思維導圖
6.8.2面向對象部分思維導圖第7章常用工具類
7.1字符串處理類
7.1.1Java中String對象的管理
7.1.2String類的常用方法
7.1.3StringBuilder和StringBuffer類
7.2正則表達式
7.2.1正則表達式的語法
7.2.2String類中操作正則表達式的方法
7.3包裝類
7.3.1Integer類
7.3.2自動封箱和解封
7.4日期類
7.4.1Date類
7.4.2Calendar類
7.4.3SimpleDateFormat類
7.4.4閱讀API文檔
7.5習題
7.6實驗指導
7.7本章思維導圖第8章集合
8.1Java中的集合框架
8.1.1集合框架的常用部分
8.1.2迭代器Iterator接口
8.2List及其實現類
8.2.1List接口
8.2.2ArrayList
8.2.3LinkedList
8.3Set及其實現類
8.3.1Set接口
8.3.2HashSet
8.3.3TreeSet
8.4Map及其實現類
8.4.1Map接口
8.4.2HashMap
8.4.3Hashtable及其子類Properties
8.5泛型
8.5.1泛型的意義
8.5.2認識和使用泛型
8.6Collections集合工具類
8.6.1List的增補功能
8.6.2多線程封裝
8.7回首Java集合框架
8.8綜合實踐——控制臺版考試系統(tǒng)
8.8.1類的設計
8.8.2代碼
8.9習題
8.10實驗指導
8.11本章思維導圖第9章異常處理
9.1Java異常體系
9.2異常的捕獲和處理
9.2.1try-catch-finally語句
9.2.2try-catch-finally語句的執(zhí)行過程
9.3使用throws拋出異常
9.4自定義異常類
9.4.1自定義異常類的方法
9.4.2throw拋出異常
9.4.3異常處理的5個關鍵字
9.5綜合實踐——用戶管理系統(tǒng)及其異常類設計
9.5.1系統(tǒng)設計
9.5.2自定義異常類
9.5.3UserDaoForMap類
9.5.4Application類
9.5.5Test類
9.6習題
9.7實驗指導
9.8本章思維導圖第10章圖形用戶界面與事件處理
10.1AWT組件及應用
10.1.1AWT和Swing概述
10.1.2AWT組成
10.1.3AWT的容器
10.1.4布局管理器
10.2事件處理
10.2.1事件處理的原理
10.2.2利用成員內部類實現事件監(jiān)聽
10.2.3利用匿名內部類實現事件監(jiān)聽
10.2.4適配器模式實現事件監(jiān)聽
10.2.5實現計算器的功能部分
10.3Swing組件
10.4綜合實踐——用戶管理系統(tǒng)與常用Swing組件的應用
10.4.1主界面與Swing組件的應用
10.4.2注冊界面與Swing組件的應用
10.4.3瀏覽用戶界面與JTable組件的應用
10.5習題
10.6實驗指導
10.7本章思維導圖第11章多線程
11.1線程的概念
11.2線程的創(chuàng)建和執(zhí)行
11.2.1繼承Thread類創(chuàng)建線程
11.2.2實現Runnable接口創(chuàng)建線程
11.3線程的狀態(tài)與生命周期
11.3.1新建和就緒狀態(tài)
11.3.2運行狀態(tài)
11.3.3阻塞狀態(tài)
11.3.4死亡狀態(tài)
11.4線程優(yōu)先級與線程調度策略
11.5線程同步
11.5.1數據共享問題
11.5.2同步和鎖機制
11.5.3同步代碼塊
11.5.4同步方法
11.5.5線程安全的集合類
11.6線程間的通信
11.6.1wait()和notify()方法
11.6.2消費者和生產者模型
11.6.3使用BlockingQueue控制線程通信
11.7習題
11.8實驗指導
11.9本章思維導圖第12章輸入/輸出流
12.1Java流的類層次結構
12.2文件
12.2.1File類
12.2.2RandomAccessFile類
12.3字節(jié)流
12.3.1抽象類InputStream和OutputStream
12.3.2文件流FileInputStream和FileOutputStream
12.3.3緩沖流BufferedInputStream和BufferedOutputS
tream
12.3.4數據過濾流DataInputStream和DataOutputStrea
m
12.3.5打印流PrintStream
12.3.6序列化接口Serializable與對象流ObjectInputS
tream和ObjectOutputStream
12.3.7字節(jié)數組流ByteArrayInputStream和ByteArrayO
utputStream
12.4字符流
12.4.1抽象類Reader和Writer
12.4.2轉換流InputStreamReader和OutputStreamWrite
r
12.4.3FileReader和FileWriter
12.4.4BufferedReader類
12.4.5PrintWriter類
12.5輸入/輸出流匯總
12.6習題
12.7實驗指導
12.8本章思維導圖第13章數據庫訪問技術
13.1MySQL數據庫與SQL語法
13.1.1MySQL數據庫的安裝
13.1.2MySQL數據庫的常用命令
13.1.3SQL語句
13.2JDBC的體系結構和JDBC驅動程序的實現方式
13.2.1JDBC的體系結構
13.2.2JDBC驅動程序的實現方式
13.3建立JDBC數據庫連接
13.3.1JDBC API的主要類和接口
13.3.2連接數據庫
13.4使用JDBC訪問數據庫
13.4.1Statement與數據表的增、刪、改
13.4.2PreparedStatement與數據表的增、刪、改
13.4.3數據表的查詢與ResultSet
13.5綜合實踐——數據庫訪問的開發(fā)模式
13.5.1基于數據庫存儲的用戶管理系統(tǒng)
13.5.2業(yè)務層——封裝DAO中的方法
13.5.3應用層——調用業(yè)務層方法完成系統(tǒng)功能
13.6習題
13.7實驗指導
13.8探究與實踐——用戶管理系統(tǒng)的權限管理
13.9本章思維導圖參考文獻