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