本書以Java SE 6和NetBeans IDE為教學(xué)和實(shí)驗(yàn)平臺,重點(diǎn)介紹Java程序設(shè)計(jì)的基礎(chǔ)理論及其應(yīng)用,內(nèi)容包括Java應(yīng)用程序的開發(fā)過程、使用NetBeans IDE開發(fā)Java應(yīng)用程序、基本類型、變量和表達(dá)式、程序流程圖與結(jié)構(gòu)化程序設(shè)計(jì)、類與對象基礎(chǔ)、繼承性、封裝性和多態(tài)性、數(shù)組、Java類庫及其應(yīng)用、抽象類、引用類型轉(zhuǎn)換和接口、異常處理、數(shù)據(jù)輸出輸入、多線程和Java小程序等。
本書注重基礎(chǔ)理論、核心技術(shù)與典型應(yīng)用的結(jié)合,力求概念簡潔、前后章節(jié)呼應(yīng)、代碼規(guī)范、深入淺出、突出應(yīng)用、配套資源齊備。通過學(xué)習(xí)本書,幫助讀者了解結(jié)構(gòu)化程序設(shè)計(jì)和面向?qū)ο蟪绦蛟O(shè)計(jì)的基礎(chǔ)理論,掌握J(rèn)ava程序設(shè)計(jì)核心技術(shù)及其典型應(yīng)用,為今后學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu)與算法以及開發(fā)Java軟件和網(wǎng)絡(luò)平臺奠定必備基礎(chǔ)。
本書面向教學(xué)(應(yīng)用)型大學(xué)的計(jì)算機(jī)科學(xué)與技術(shù)、信息管理與信息系統(tǒng)、電子商務(wù)、軟件工程等相關(guān)專業(yè),可作為“面向?qū)ο蟪绦蛟O(shè)計(jì)”和“Java程序設(shè)計(jì)”等課程的教材,尤其適用于各類Java初學(xué)者的教學(xué)或自學(xué)。
程序設(shè)計(jì)方法主要分為結(jié)構(gòu)化程序設(shè)計(jì)(Structured Programming,SP)和面向?qū)ο蟪绦蛟O(shè)計(jì)(ObjectOriented Programming,OOP)兩種。雖然兩種方法都是用來解決程序設(shè)計(jì)問題的,但基本思想和關(guān)鍵知識點(diǎn)各有側(cè)重。
SP的基本思想是,將整個(gè)程序分解為若干模塊(子程序),每個(gè)模塊實(shí)現(xiàn)特定的功能。模塊內(nèi)部的程序執(zhí)行過程可以用順序、選擇和循環(huán)等基本控制結(jié)構(gòu)的嵌套式組合表示和實(shí)現(xiàn)。模塊之間的相互關(guān)系也可以用上述組合表示和實(shí)現(xiàn),還可以是包含與被包含(調(diào)用與被調(diào)用)的關(guān)系。SP包括自頂向下、逐步細(xì)化、模塊化、子程序(過程、函數(shù))、順序結(jié)構(gòu)、選擇結(jié)構(gòu)、循環(huán)結(jié)構(gòu)等關(guān)鍵知識點(diǎn)。
OOP的基本思想是,程序的基本單元是對象。在程序中可以用對象描述現(xiàn)實(shí)世界中的事物,對象是數(shù)據(jù)和數(shù)據(jù)操作的統(tǒng)一整體。每個(gè)對象都能夠接收消息(包含數(shù)據(jù))、處理數(shù)據(jù)和向其他對象發(fā)送消息(包含數(shù)據(jù))。OOP包括類、對象、消息傳遞、繼承性、封裝性以及多態(tài)性等關(guān)鍵知識點(diǎn)。
Java語言融合了結(jié)構(gòu)化程序設(shè)計(jì)和面向?qū)ο蟪绦蛟O(shè)計(jì)兩種方法。
本書從結(jié)構(gòu)化程序設(shè)計(jì)和面向?qū)ο蟪绦蛟O(shè)計(jì)方法及其應(yīng)用的角度出發(fā),集中并詳細(xì)講解Java程序設(shè)計(jì)的基礎(chǔ)理論及相應(yīng)的核心技術(shù)。
全書共分13章,內(nèi)容包括Java應(yīng)用程序的開發(fā)過程、使用NetBeans IDE開發(fā)Java應(yīng)用程序、基本類型、變量和表達(dá)式、程序流程圖與結(jié)構(gòu)化程序設(shè)計(jì)、類與對象基礎(chǔ)、繼承性、封裝性和多態(tài)性、數(shù)組、Java類庫及其應(yīng)用、抽象類、引用類型轉(zhuǎn)換和接口、異常處理、數(shù)據(jù)輸出輸入、多線程和Java小程序等。
在內(nèi)容的選取和組織上,本書努力做到以下幾點(diǎn):
(1) 章節(jié)之間前后呼應(yīng)。前面章節(jié)的知識點(diǎn)及例題為后面章節(jié)的學(xué)習(xí)進(jìn)行鋪墊,后面章節(jié)的例題既針對本章的知識點(diǎn),又結(jié)合和復(fù)習(xí)前面章節(jié)的相關(guān)知識點(diǎn)。
如第8章中的“刪除字符串中的所有空格”、“將字符串中的全角數(shù)字轉(zhuǎn)換為半角數(shù)字”和“根據(jù)身份證號碼計(jì)算年齡”等例題,不僅列舉了本章有關(guān)StringBuffer、Date和SimpleDateFormat等類及其方法在實(shí)際問題中的應(yīng)用,而且結(jié)合和復(fù)習(xí)了順序、選擇和循環(huán)等基本控制結(jié)構(gòu)在程序執(zhí)行過程中的嵌套式組合運(yùn)用。更重要的是,這些例題強(qiáng)化了順序結(jié)構(gòu)、選擇結(jié)構(gòu)、循環(huán)結(jié)構(gòu)、程序流程圖和Java API等關(guān)鍵知識點(diǎn)及其應(yīng)用的重要性。
又如,在第7章中列舉了一維整數(shù)數(shù)組的冒泡排序,闡述了冒泡排序的工作原理。在第8章中分別使用引用類型轉(zhuǎn)換和接口技術(shù),以“對數(shù)組中的不同圖形對象按照面積大小進(jìn)行排序”、“按照成績對一組學(xué)生排序”和“按照面積對一組矩形排序”為實(shí)際問題,復(fù)習(xí)并擴(kuò)展了冒泡排序的應(yīng)用領(lǐng)域。在第13章中介紹Java小程序時(shí),還以動畫形式演示了冒泡法將一維無序數(shù)組轉(zhuǎn)換為有序數(shù)組的工作過程,這樣既舉例講解了如何應(yīng)用Java小程序制作動畫,又再次幫助學(xué)生加深對冒泡排序工作原理的理解。
再如,在第7章中分別使用二維數(shù)組和一維數(shù)組求解八皇后問題。在第13章中又應(yīng)用Java小程序及其輸出以動畫形式演示了皇后問題的求解過程。
這一系列例題既體現(xiàn)了章節(jié)之間的前后呼應(yīng),又可以循序漸進(jìn)地將相關(guān)知識點(diǎn)有機(jī)地結(jié)合起來。這樣,既達(dá)到強(qiáng)化和鞏固關(guān)鍵知識點(diǎn)的效果,又有助于引導(dǎo)和培養(yǎng)學(xué)生綜合應(yīng)用多種技術(shù)解決實(shí)際問題的能力。
(2) 注重理論、技術(shù)與應(yīng)用的有機(jī)結(jié)合,尤其突出技術(shù)及其應(yīng)用。
如第12章中的“模擬庫存管理流程”例題,既說明了如何使用同步技術(shù)解決線程干擾所引發(fā)的共享數(shù)據(jù)不一致,又列舉了如何使用wait方法和notify方法協(xié)調(diào)線程之間的執(zhí)行進(jìn)度。在緊接著的“改進(jìn)庫存管理流程”例題中,針對客戶需求響應(yīng)、庫存成本和采購成本等因素,在改進(jìn)前例程序的基礎(chǔ)上模擬了設(shè)置安全庫存、限制最大庫存和動態(tài)調(diào)整單次采購量等策略和方法。這樣,既可以將線程及其狀態(tài)轉(zhuǎn)換等理論、線程同步和通信等技術(shù)與“庫存管理”應(yīng)用有機(jī)地結(jié)合起來,又能夠幫助讀者了解和理解庫存管理知識,從而突出理論和技術(shù)的應(yīng)用價(jià)值。
從解決實(shí)際問題的角度看,第8章中的“刪除字符串中的所有空格”、“將字符串中的全角數(shù)字轉(zhuǎn)換為半角數(shù)字”和“根據(jù)身份證號碼計(jì)算年齡”等例題也可謂理論、技術(shù)與應(yīng)用的有機(jī)結(jié)合。
(3) 重點(diǎn)突出,內(nèi)容緊湊。精選各章關(guān)鍵知識點(diǎn)和核心技術(shù),并圍繞關(guān)鍵知識點(diǎn)和核心技術(shù)深入展開,避免面面俱到和蜻蜓點(diǎn)水。
本書內(nèi)容并不覆蓋Java程序設(shè)計(jì)涉及的所有知識點(diǎn),例如在本書中并沒有介紹泛型、正則表達(dá)式、Swing圖形用戶界面和事件處理等知識點(diǎn)。但本書所介紹的知識點(diǎn)以及所提供的例題和習(xí)題能夠幫助讀者了解結(jié)構(gòu)化程序設(shè)計(jì)和面向?qū)ο蟪绦蛟O(shè)計(jì)的基礎(chǔ)理論,掌握J(rèn)ava程序設(shè)計(jì)的核心技術(shù)及其典型應(yīng)用,為今后學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu)和算法以及開發(fā)Java軟件和網(wǎng)絡(luò)平臺奠定必備基礎(chǔ)。
本書面向教學(xué)(應(yīng)用)型大學(xué)的計(jì)算機(jī)科學(xué)與技術(shù)、信息管理與信息系統(tǒng)、電子商務(wù)、軟件工程等相關(guān)專業(yè),可作為“面向?qū)ο蟪绦蛟O(shè)計(jì)”和“Java程序設(shè)計(jì)”等課程的教材,尤其適用于各類Java初學(xué)者的教學(xué)或自學(xué)。
本書由西華大學(xué)的崔敬東、徐雷共同編著。其中,崔敬東負(fù)責(zé)第4~13章,徐雷負(fù)責(zé)第1~3章。此外,本書的出版還得到清華大學(xué)出版社有關(guān)工作人員的大力支持。在此特向他(她)們表示誠摯的感謝!
歡迎各類高校老師、同學(xué)和其他讀者選用本書,并敬請各位對書中內(nèi)容提出批評意見或改進(jìn)建議。
崔敬東
2015年5月于成都