本書以Java SE 6為基礎(chǔ),按照從面向?qū)ο蟮恼Z(yǔ)言走進(jìn)面向?qū)ο蟮乃枷、利用圖表增強(qiáng)文字的表現(xiàn)力、注重知識(shí)的原理性的編寫思想,詳細(xì)敘述了Java語(yǔ)言的基礎(chǔ)知識(shí),面向?qū)ο蟮姆庋b、類、繼承、多態(tài)性,Java常用工具類、集合、異常處理,及圖形用戶界面、多線程、輸入/輸出流、JDBC等內(nèi)容。
Java語(yǔ)言的生命力毋庸置疑,1991年由Sun公司(后被Oracle公司收購(gòu))開發(fā)。2014年,Java發(fā)布了Java SE 8版本,它以優(yōu)秀的性質(zhì)馳騁在各個(gè)領(lǐng)域,以開源建設(shè)的方式不斷地為其注入新鮮血液。思考了許久怎樣寫此書才能打好Java的根基,為今后Struts、Spring、EJB等的學(xué)習(xí)奠定堅(jiān)實(shí)的基礎(chǔ);如何能讓年輕的學(xué)習(xí)者們輕松、高效地完成學(xué)習(xí),不會(huì)感覺代碼是枯燥冰冷的字符,而是悅動(dòng)在指尖的一串串的音符…。帶著讓學(xué)習(xí)者以享受的姿態(tài)步入Java程序員行列的希冀,最終確定了如下編寫思想。
。1)從面向?qū)ο蟮恼Z(yǔ)言走進(jìn)面向?qū)ο蟮乃枷肴魏我婚T計(jì)算機(jī)語(yǔ)言的學(xué)習(xí)都不僅僅是熟知語(yǔ)法的過程。計(jì)算機(jī)語(yǔ)言的語(yǔ)法就如音樂中的音符,它們會(huì)在不同人的筆下誕生奇妙的樂譜,那是作曲家賦予音符的靈魂。面向?qū)ο蟮乃枷刖褪敲嫦驅(qū)ο笳Z(yǔ)言的靈魂。
本書在講述Java語(yǔ)法知識(shí)的同時(shí),更注重面向?qū)ο笏枷氲膶W(xué)習(xí)和貫徹。從面向?qū)ο蠓治龀霭l(fā),使用面向?qū)ο蠊ぞ遀ML類圖描述類結(jié)構(gòu)及類與類之間的關(guān)系;在系統(tǒng)設(shè)計(jì)和組織程序架構(gòu)時(shí),引入面向?qū)ο笤O(shè)計(jì)中的經(jīng)典原則和設(shè)計(jì)模式。從學(xué)習(xí)伊始就培養(yǎng)面向?qū)ο蟮囊暯呛鸵?guī)范的編程方式,不僅要寫出代碼,而且要寫出專業(yè)、漂亮的代碼。
(2)使用圖表增強(qiáng)文字的表現(xiàn)力相對(duì)于文字而言,圖可以更形象、立體地展示知識(shí)及彼此間的聯(lián)系,表可以梳理、對(duì)比相關(guān)、相似的知識(shí)點(diǎn)。相信讀者間都會(huì)有一種共識(shí),如果面對(duì)一份長(zhǎng)篇大論,那么你的關(guān)注點(diǎn)首先會(huì)集中到穿插在文字中的圖或表,因?yàn)閺膱D表中可以快速提取到文字的主旨、脈絡(luò)和精華;而且我也在猜想,從小看漫畫長(zhǎng)大的年輕一代會(huì)對(duì)圖表具有更高的敏感度。
本書盡可能地為抽象、不易單純通過語(yǔ)言表述清楚、信息量大、知識(shí)龐雜的部分設(shè)計(jì)了圖表,力求簡(jiǎn)明扼要地展示知識(shí)結(jié)構(gòu)。
另外,本書各章都使用思維導(dǎo)圖從更高的角度對(duì)整章知識(shí)、案例進(jìn)行了梳理,將看似零散的文字濃縮在一張圖中,提綱挈領(lǐng),將知識(shí)從點(diǎn)連接成線,再構(gòu)建為面,最終立體化,達(dá)到讀書“從物理上將書變厚,從邏輯上將書變薄”的效果。
。3)知其然亦知其所以然堅(jiān)實(shí)的基礎(chǔ)是進(jìn)階的基石。本書注重知識(shí)背后隱藏的原理和細(xì)節(jié),培養(yǎng)讀者從why和how的角度構(gòu)建學(xué)習(xí)的習(xí)慣,使學(xué)習(xí)不僅知其然,更能做到知其所以然,以扎實(shí)的基本功為后續(xù)的學(xué)習(xí)打好根基。本書架構(gòu)如下:
本書由宋晏、楊國(guó)興主編,胡倩茹(河北大學(xué))、陳曉美副主編,參加編寫工作的還有劉勇、嚴(yán)婷、呂東艷、朱紅、張子萍、張小靜。
由于時(shí)間倉(cāng)促,書中難免有疏漏和不足之處,敬請(qǐng)廣大讀者批評(píng)指正。
機(jī)工授權(quán)書
前言
第1章Java程序設(shè)計(jì)概述
1.1Java程序平臺(tái)
1.2Java的特性
1.3Java程序設(shè)計(jì)環(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命令行方式下的編譯和運(yùn)行
1.4.3使用Eclipse開發(fā)Java程序
1.5習(xí)題
1.6實(shí)驗(yàn)指導(dǎo)
1.7本章思維導(dǎo)圖第2章Java語(yǔ)言基礎(chǔ)
2.1標(biāo)識(shí)符和關(guān)鍵字
2.2基本數(shù)據(jù)類型與變量、常量
2.2.1Java中的整數(shù)類型
2.2.2Java中的字符類型
2.2.3浮點(diǎn)類型
2.2.4布爾類型
2.2.5符號(hào)常量
2.3運(yùn)算符
2.3.1算術(shù)運(yùn)算符
2.3.2關(guān)系運(yùn)算符和邏輯運(yùn)算符
2.3.3位運(yùn)算符
2.3.4賦值運(yùn)算符
2.3.5運(yùn)算符的優(yōu)先級(jí)與結(jié)合性
2.4表達(dá)式的類型轉(zhuǎn)換
2.4.1數(shù)據(jù)類型自動(dòng)轉(zhuǎn)換的規(guī)則
2.4.2強(qiáng)制類型轉(zhuǎn)換
2.5流程控制
2.5.1if語(yǔ)句
2.5.2switch語(yǔ)句
2.5.3while循環(huán)語(yǔ)句
2.5.4for循環(huán)語(yǔ)句
2.5.5do-while循環(huán)語(yǔ)句
2.5.6break語(yǔ)句
2.5.7循環(huán)的嵌套
2.6方法
2.6.1方法的定義
2.6.2方法的重載
2.7綜合實(shí)踐——簡(jiǎn)易算術(shù)計(jì)算器
2.8習(xí)題
2.9實(shí)驗(yàn)指導(dǎo)
2.10本章思維導(dǎo)圖第3章數(shù)組
3.1聲明數(shù)組
3.2創(chuàng)建數(shù)組對(duì)象
3.3使用數(shù)組
3.3.1數(shù)組元素的引用
3.3.2Java方法中的不定長(zhǎng)參數(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綜合實(shí)踐——學(xué)生成績(jī)查詢系統(tǒng)
3.7.1查詢系統(tǒng)的數(shù)據(jù)結(jié)構(gòu)
3.7.2模塊化設(shè)計(jì)
3.7.3控制臺(tái)命令的讀取和控制run()
3.7.4查詢某人某門課成績(jī)get()
3.8習(xí)題
3.9實(shí)驗(yàn)指導(dǎo)
3.10探究與實(shí)踐——兩人對(duì)弈的五子棋游戲
3.11本章思維導(dǎo)圖第4章封裝與類
4.1封裝的意義
4.2定義類
4.2.1面向?qū)ο蟮姆治?nbsp;
4.2.2使用class定義類
4.3對(duì)象和引用
4.3.1對(duì)象和引用的關(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綜合實(shí)踐——酒店前臺(tái)客房管理系統(tǒng)
4.7.1類的設(shè)計(jì)——組合關(guān)系
4.7.2客房編號(hào)的處理方法
4.7.3Room類設(shè)計(jì)
4.7.4Hotel類設(shè)計(jì)
4.7.5客戶端Client類實(shí)現(xiàn)
4.8習(xí)題
4.9實(shí)驗(yàn)指導(dǎo)
4.10本章思維導(dǎo)圖第5章類的繼承
5.1繼承
5.1.1繼承的概念
5.1.2繼承的實(shí)現(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子類對(duì)象的構(gòu)造
5.3.1子類對(duì)象的構(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實(shí)驗(yàn)指導(dǎo)
5.8本章思維導(dǎo)圖第6章多態(tài)性
6.1多態(tài)
6.1.1多態(tài)性
6.1.2靜態(tài)綁定和動(dòng)態(tài)綁定
6.1.3instanceof運(yùn)算符
6.2抽象類
6.2.1抽象類及抽象方法的定義
6.2.2為什么設(shè)計(jì)抽象類
6.2.3開閉原則
6.3接口
6.3.1接口的定義和實(shí)現(xiàn)
6.3.2接口與抽象類的區(qū)別
6.4面向接口的編程
6.4.1案例分析
6.4.2面向接口編程的代碼組織
6.5綜合實(shí)踐——格式化輸出學(xué)生對(duì)象數(shù)據(jù)
6.5.1系統(tǒng)架構(gòu)
6.5.2面向接口編程的代碼
6.6習(xí)題
6.7實(shí)驗(yàn)指導(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對(duì)象的管理
7.1.2String類的常用方法
7.1.3StringBuilder和StringBuffer類
7.2正則表達(dá)式
7.2.1正則表達(dá)式的語(yǔ)法
7.2.2String類中操作正則表達(dá)式的方法
7.3包裝類
7.3.1Integer類
7.3.2自動(dòng)封箱和解封
7.4日期類
7.4.1Date類
7.4.2Calendar類
7.4.3SimpleDateFormat類
7.4.4閱讀API文檔
7.5習(xí)題
7.6實(shí)驗(yàn)指導(dǎo)
7.7本章思維導(dǎo)圖第8章集合
8.1Java中的集合框架
8.1.1集合框架的常用部分
8.1.2迭代器Iterator接口
8.2List及其實(shí)現(xiàn)類
8.2.1List接口
8.2.2ArrayList
8.2.3LinkedList
8.3Set及其實(shí)現(xiàn)類
8.3.1Set接口
8.3.2HashSet
8.3.3TreeSet
8.4Map及其實(shí)現(xiàn)類
8.4.1Map接口
8.4.2HashMap
8.4.3Hashtable及其子類Properties
8.5泛型
8.5.1泛型的意義
8.5.2認(rèn)識(shí)和使用泛型
8.6Collections集合工具類
8.6.1List的增補(bǔ)功能
8.6.2多線程封裝
8.7回首Java集合框架
8.8綜合實(shí)踐——控制臺(tái)版考試系統(tǒng)
8.8.1類的設(shè)計(jì)
8.8.2代碼
8.9習(xí)題
8.10實(shí)驗(yàn)指導(dǎo)
8.11本章思維導(dǎo)圖第9章異常處理
9.1Java異常體系
9.2異常的捕獲和處理
9.2.1try-catch-finally語(yǔ)句
9.2.2try-catch-finally語(yǔ)句的執(zhí)行過程
9.3使用throws拋出異常
9.4自定義異常類
9.4.1自定義異常類的方法
9.4.2throw拋出異常
9.4.3異常處理的5個(gè)關(guān)鍵字
9.5綜合實(shí)踐——用戶管理系統(tǒng)及其異常類設(shè)計(jì)
9.5.1系統(tǒng)設(shè)計(jì)
9.5.2自定義異常類
9.5.3UserDaoForMap類
9.5.4Application類
9.5.5Test類
9.6習(xí)題
9.7實(shí)驗(yàn)指導(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)部類實(shí)現(xiàn)事件監(jiān)聽
10.2.3利用匿名內(nèi)部類實(shí)現(xiàn)事件監(jiān)聽
10.2.4適配器模式實(shí)現(xiàn)事件監(jiān)聽
10.2.5實(shí)現(xiàn)計(jì)算器的功能部分
10.3Swing組件
10.4綜合實(shí)踐——用戶管理系統(tǒng)與常用Swing組件的應(yīng)用
10.4.1主界面與Swing組件的應(yīng)用
10.4.2注冊(cè)界面與Swing組件的應(yīng)用
10.4.3瀏覽用戶界面與JTable組件的應(yīng)用
10.5習(xí)題
10.6實(shí)驗(yàn)指導(dǎo)
10.7本章思維導(dǎo)圖第11章多線程
11.1線程的概念
11.2線程的創(chuàng)建和執(zhí)行
11.2.1繼承Thread類創(chuàng)建線程
11.2.2實(shí)現(xiàn)Runnable接口創(chuàng)建線程
11.3線程的狀態(tài)與生命周期
11.3.1新建和就緒狀態(tài)
11.3.2運(yùn)行狀態(tài)
11.3.3阻塞狀態(tài)
11.3.4死亡狀態(tài)
11.4線程優(yōu)先級(jí)與線程調(diào)度策略
11.5線程同步
11.5.1數(shù)據(jù)共享問題
11.5.2同步和鎖機(jī)制
11.5.3同步代碼塊
11.5.4同步方法
11.5.5線程安全的集合類
11.6線程間的通信
11.6.1wait()和notify()方法
11.6.2消費(fèi)者和生產(chǎn)者模型
11.6.3使用BlockingQueue控制線程通信
11.7習(xí)題
11.8實(shí)驗(yàn)指導(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與對(duì)象流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實(shí)驗(yàn)指導(dǎo)
12.8本章思維導(dǎo)圖第13章數(shù)據(jù)庫(kù)訪問技術(shù)
13.1MySQL數(shù)據(jù)庫(kù)與SQL語(yǔ)法
13.1.1MySQL數(shù)據(jù)庫(kù)的安裝
13.1.2MySQL數(shù)據(jù)庫(kù)的常用命令
13.1.3SQL語(yǔ)句
13.2JDBC的體系結(jié)構(gòu)和JDBC驅(qū)動(dòng)程序的實(shí)現(xiàn)方式
13.2.1JDBC的體系結(jié)構(gòu)
13.2.2JDBC驅(qū)動(dòng)程序的實(shí)現(xiàn)方式
13.3建立JDBC數(shù)據(jù)庫(kù)連接
13.3.1JDBC API的主要類和接口
13.3.2連接數(shù)據(jù)庫(kù)
13.4使用JDBC訪問數(shù)據(jù)庫(kù)
13.4.1Statement與數(shù)據(jù)表的增、刪、改
13.4.2PreparedStatement與數(shù)據(jù)表的增、刪、改
13.4.3數(shù)據(jù)表的查詢與ResultSet
13.5綜合實(shí)踐——數(shù)據(jù)庫(kù)訪問的開發(fā)模式
13.5.1基于數(shù)據(jù)庫(kù)存儲(chǔ)的用戶管理系統(tǒng)
13.5.2業(yè)務(wù)層——封裝DAO中的方法
13.5.3應(yīng)用層——調(diào)用業(yè)務(wù)層方法完成系統(tǒng)功能
13.6習(xí)題
13.7實(shí)驗(yàn)指導(dǎo)
13.8探究與實(shí)踐——用戶管理系統(tǒng)的權(quán)限管理
13.9本章思維導(dǎo)圖參考文獻(xiàn)