Java程序設(shè)計(jì)及實(shí)驗(yàn)
定 價(jià):74.5 元
本書(shū)是講述Java程序設(shè)計(jì)的教材,介紹了數(shù)據(jù)類型、變量聲明、流程控制等基礎(chǔ)內(nèi)容;面向?qū)ο笥嘘P(guān)的內(nèi)容有類和方法的聲明、繼承、接口(default、static和私有方法)、抽象類(Lambda表達(dá)式、方法引用、Stream);接著介紹枚舉和異常處理。基礎(chǔ)知識(shí)介紹完后,接著介紹Java中的庫(kù),包括文件操作的輸入輸出、圖形有關(guān)的Swing和JavaFX、訪問(wèn)數(shù)據(jù)庫(kù)的JDBC。Java中的常用數(shù)據(jù)結(jié)構(gòu)在集合中介紹。此次改版,增加了instanceof模式匹配、switch表達(dá)式的內(nèi)容,對(duì)能簡(jiǎn)化數(shù)據(jù)庫(kù)操作的Spring、hibernate進(jìn)行了改寫(xiě)。為了方便編譯、運(yùn)行Spring和Hibernate程序,介紹了如何使用Gradle構(gòu)建工具。為了配合正文中內(nèi)容的學(xué)習(xí),在附錄中介紹了SQL、HSQLDB、Gradle和Eclipse的使用。本書(shū)由多位長(zhǎng)期從事Java教學(xué)的教師根據(jù)實(shí)際授課經(jīng)驗(yàn)編寫(xiě)而成,通過(guò)在教學(xué)環(huán)境中試用,證明具有較好的教學(xué)效果。
本書(shū)由具有豐富實(shí)際項(xiàng)目開(kāi)發(fā)經(jīng)驗(yàn)和多年從事教學(xué)的教師編著,突出知識(shí)點(diǎn)的實(shí)際應(yīng)用,摒棄單純的知識(shí)講解,相比同類教材本書(shū)具有如下特點(diǎn): 1.以模擬制作現(xiàn)有軟件為起點(diǎn),拋磚引玉,培養(yǎng)學(xué)生發(fā)現(xiàn)問(wèn)題、解決實(shí)際問(wèn)題的能力 本書(shū)配有生動(dòng)和實(shí)用的例子,可以激發(fā)學(xué)生的興趣,如文件的壓縮、解壓縮,制作文本編輯器、制作圖片瀏覽器,簡(jiǎn)單的音樂(lè)播放器等。 2.強(qiáng)化實(shí)用內(nèi)容的講解,省略不常用的知識(shí),增加常用知識(shí)所占的比重。 3.考慮到讀者具備前續(xù)知識(shí)的不同,以及正文知識(shí)點(diǎn)的擴(kuò)充,以附錄的形式為正文中的用到的相關(guān)知識(shí)做補(bǔ)充,如常用的SQL語(yǔ)句的介紹,以及如何使用Ant來(lái)簡(jiǎn)化java程序構(gòu)建等。 4.本書(shū)教材示例編碼符合開(kāi)發(fā)規(guī)范,可以訓(xùn)練學(xué)生養(yǎng)成良好的編碼習(xí)慣。
本書(shū)的內(nèi)容主要來(lái)自為軟件類專業(yè)本科生授課的講義,在正式出版前,經(jīng)過(guò)了兩年的試用,根據(jù)試用學(xué)生的反饋意見(jiàn),作者對(duì)內(nèi)容進(jìn)行了不斷的修改、完善。出版后,根據(jù)一些教師和學(xué)生的反饋,在本次修訂時(shí)對(duì)部分內(nèi)容做了調(diào)整。本書(shū)介紹Java編程語(yǔ)言的基礎(chǔ)知識(shí)以實(shí)用為主,對(duì)于書(shū)中列的一些原理,學(xué)生不必死記,自己動(dòng)手寫(xiě)程序驗(yàn)證一下就可得到同樣結(jié)論。初學(xué)時(shí)要以動(dòng)手大量的寫(xiě)程序?yàn)橹。本?shū)內(nèi)容簡(jiǎn)單,有時(shí)甚至有意對(duì)復(fù)雜的問(wèn)題進(jìn)行簡(jiǎn)化,不注重全面,主要目的是使學(xué)生可以快速入手。本書(shū)減少了復(fù)雜的或初學(xué)不太重要的內(nèi)容,盡量不讓學(xué)生有畏難情緒,愿意寫(xiě)一些程序。在入手之后,可以自學(xué),對(duì)書(shū)中某些知識(shí)進(jìn)行補(bǔ)充。要想學(xué)會(huì)一門編程語(yǔ)言,需要?jiǎng)邮志幊,正如我們的先輩所說(shuō): 紙上得來(lái)終覺(jué)淺,絕知此事要躬行。本書(shū)中的習(xí)題以及實(shí)驗(yàn)的數(shù)量不多,學(xué)生要自己找問(wèn)題來(lái)編程解決,完全可以從生活中遇到的問(wèn)題出發(fā)。Java語(yǔ)言特別適于解決手工計(jì)算的問(wèn)題,高等數(shù)學(xué)、線性代數(shù)、概率與統(tǒng)計(jì)中都有很多需要計(jì)算的地方,可以試著編程求解兩個(gè)矩陣相乘,求矩陣的分解等。學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu)時(shí),可以用Java實(shí)現(xiàn)鏈表、鏈?zhǔn)蕉褩5。這樣既可以學(xué)好基礎(chǔ)知識(shí),又可以學(xué)習(xí)如何用程序解決實(shí)際問(wèn)題。在學(xué)會(huì)Java的基本語(yǔ)法后,繼續(xù)學(xué)習(xí)分為兩方面: 一個(gè)是學(xué)習(xí)使用Java自帶的類庫(kù)、第三方提供的類庫(kù);另一個(gè)是自己寫(xiě)類。這兩方面同樣重要,站在巨人的肩膀上才能看得更遠(yuǎn)。同樣,每個(gè)人遇到的情況都是不一樣的,通用的類庫(kù)只能解決共有的問(wèn)題,無(wú)法解決特定的問(wèn)題。學(xué)習(xí)Java有一個(gè)非常大的好處,那就是有詳細(xì)的幫助文檔。大家如果想學(xué)會(huì)Java,必須學(xué)會(huì)使用Java自帶類庫(kù)的API文檔。該文檔可以從Oracle網(wǎng)站下載。同樣,第三方類庫(kù)也提供有API文檔,這是極好的參考。大部分的第三方Java類庫(kù)都是開(kāi)源的,Java類庫(kù)還提供了源代碼(JDK下src.zip中就是),可以同時(shí)下載源代碼,通過(guò)這些源代碼進(jìn)行學(xué)習(xí)。如果對(duì)某一個(gè)方法不明白,可查看源代碼。Oracle還提供了在線Java tutorial(Java教程),其中提供了豐富的例子。在有些類的API文檔中有在線教程的鏈接,該教程也可以下載。這些文檔有些有中文版,但建議不要看,盡量看英文版的,可以同時(shí)提高自己的英文水平。就目前來(lái)說(shuō),大量的資料和比較新的資料都是英文的,直接看英文資料就不用等待翻譯,何況有些資料根本沒(méi)有相應(yīng)的翻譯。另外,中文翻譯的質(zhì)量不太令人樂(lè)觀,有些中文翻譯似是而非,詞不達(dá)意,甚至和原文意思相反。開(kāi)始看英文資料的時(shí)候會(huì)有點(diǎn)痛苦,只要堅(jiān)持看一段時(shí)間,就會(huì)越來(lái)越順暢。做事取得的結(jié)果取決于你的熱情、堅(jiān)持、付出的程度!學(xué)編程也是如此!明天的幸福生活,來(lái)自于今天的努力!讓我們攜手共進(jìn),繼續(xù)創(chuàng)造更美好的生活!本書(shū)由河南工業(yè)大學(xué)人工智能與大數(shù)據(jù)學(xué)院和信息科學(xué)與工程學(xué)院的老師合力編寫(xiě),按章節(jié)順序,第1、3章由宋敏完成、第4、5、10章由王社偉完成,第2章、第6~9章、第12~14章由劉繼承完成,第11章、實(shí)驗(yàn)以及附錄由鄭麗萍完成。感謝指出第1版書(shū)中錯(cuò)誤和不足之處的老師和同學(xué)們!編寫(xiě)一本書(shū)并保證敘述清楚、內(nèi)容正確,非親歷不能體會(huì)其中的艱辛。雖然如此,錯(cuò)誤、敘述不清之處仍在所難免,歡迎大家指正。
作者2024年12月
第一部分Java程序設(shè)計(jì)第1章Java入門31.1Java簡(jiǎn)介31.1.1Java的由來(lái)31.1.2Java的特點(diǎn)41.2Java平臺(tái)61.2.1Java平臺(tái)的構(gòu)成61.2.2Java平臺(tái)的版本61.2.3JRE 和 JDK71.2.4JDK的下載與安裝81.2.5環(huán)境變量的配置101.3Java程序的種類與開(kāi)發(fā)流程121.3.1Java程序的種類121.3.2Java程序的開(kāi)發(fā)流程121.4小試身手131.5Java API文檔的使用141.6Java Doc文檔151.6.1語(yǔ)法151.6.2文檔標(biāo)簽簡(jiǎn)介161.6.3生成Java Doc文檔171.7JShell19本章小結(jié)20習(xí)題120第2章Java的基本語(yǔ)法212.1原始類型212.1.1整數(shù)類型222.1.2實(shí)數(shù)類型242.1.3字符型242.1.4布爾型252.1.5強(qiáng)制類型轉(zhuǎn)換252.2引用類型262.3String262.4聲明變量272.4.1變量的賦值282.4.2變量的默認(rèn)值282.4.3常量282.4.4變量的作用范圍282.5命名292.6運(yùn)算符與表達(dá)式292.6.1算術(shù)運(yùn)算符292.6.2關(guān)系運(yùn)算符312.6.3邏輯運(yùn)算符312.6.4位運(yùn)算符332.6.5賦值運(yùn)算符342.6.6其他運(yùn)算符 352.7數(shù)組352.7.1一維數(shù)組362.7.2多維數(shù)組37本章小結(jié)38習(xí)題238第3章流程控制403.1分支語(yǔ)句403.1.1if…else語(yǔ)句403.1.2switch語(yǔ)句423.1.3switch表達(dá)式453.2循環(huán)語(yǔ)句463.2.1while語(yǔ)句463.2.2do…while語(yǔ)句463.2.3for語(yǔ)句473.2.4for…each語(yǔ)句493.2.5嵌套循環(huán)503.2.6循環(huán)語(yǔ)句的對(duì)比503.3跳轉(zhuǎn)語(yǔ)句513.3.1break語(yǔ)句513.3.2continue語(yǔ)句533.3.3return語(yǔ)句54本章小結(jié)55習(xí)題355第4章面向?qū)ο缶幊?74.1面向?qū)ο缶幊谈攀?74.2類的定義584.2.1類的基本結(jié)構(gòu)584.2.2成員變量和局部變量604.2.3成員方法624.2.4Overloading684.2.5構(gòu)造方法704.2.6this724.3對(duì)象724.3.1對(duì)象的創(chuàng)建734.3.2對(duì)象的使用744.3.3對(duì)象的清除744.3.4record快速構(gòu)建對(duì)象754.4static764.4.1類變量764.4.2類方法784.4.3靜態(tài)語(yǔ)句塊784.5包和模塊794.5.1包的定義804.5.2編譯和運(yùn)行包中的類804.5.3import語(yǔ)句824.5.4模塊834.6訪問(wèn)權(quán)限修飾符864.6.1private864.6.2friendly864.6.3protected874.6.4public884.7常用類884.7.1Object類884.7.2String類與StringBuffer類904.7.3數(shù)值包裝類944.7.4Math類954.7.5Random類974.7.6處理日期的類974.7.7Arrays類1004.7.8Objects類102本章小結(jié)103習(xí)題4103第5章繼承1055.1繼承的語(yǔ)法1055.2成員變量的隱藏和方法的覆蓋1065.3super1075.4final和sealed 1085.5多態(tài)1105.6繼承與組合1145.7初始化順序116本章小結(jié)119習(xí)題5119第6章抽象類、接口和內(nèi)部類1216.1抽象類1216.1.1聲明抽象類1216.1.2繼承抽象類1216.1.3抽象類的應(yīng)用1216.2接口1246.2.1聲明接口1246.2.2實(shí)現(xiàn)接口1256.2.3default、private和static方法1256.3內(nèi)部類1266.3.1內(nèi)部類的概念1266.3.2匿名內(nèi)部類1276.4Lambda表達(dá)式1306.4.1定義1306.4.2常見(jiàn)函數(shù)式接口1316.4.3方法引用131本章小結(jié)132習(xí)題6133第7章枚舉1347.1枚舉變量的定義1347.2枚舉在if和switch語(yǔ)句中的應(yīng)用134本章小結(jié)136習(xí)題7136第8章異常1378.1異常信息1378.2異常的處理1388.3異常的類型1408.4finally1408.5throws1418.6自定義異常1418.7異常的進(jìn)一步處理1428.7.1在何處處理異常1428.7.2同時(shí)處理父、子類異常1438.7.3同時(shí)處理多個(gè)異常144本章小結(jié)145習(xí)題8145第9章輸入輸出1469.1File1469.1.1創(chuàng)建一個(gè)File對(duì)象1469.1.2訪問(wèn)File對(duì)象的方法1479.1.3列出目錄下的文件1489.1.4列出目錄下滿足條件的文件1489.1.5Path1519.2輸入流1529.2.1字節(jié)輸入流1529.2.2try…with…resources語(yǔ)句1579.2.3字符輸入流1589.2.4Scanner1629.2.5從控制臺(tái)輸入1639.3輸出流1679.3.1字節(jié)輸出流1679.3.2字符輸出流1709.3.3格式化輸出1729.4數(shù)字字節(jié)輸入輸出流1739.4.1DataInputStream和DataOutputStream1739.4.2RandomAccessFile1759.5對(duì)象輸入輸出流1769.6壓縮、解壓縮流1789.6.1壓縮1789.6.2解壓縮1799.7Files工具類180本章小結(jié)181習(xí)題9182第10章圖形用戶界面18410.1AWT包與Swing包18410.1.1輔助類18610.1.2組件類18610.1.3容器類18610.2版面布局管理器19010.2.1FlowLayout19110.2.orderLayout19210.2.3GridLayout19410.2.4CardLayout19510.2.5無(wú)布局管理器19610.3事件處理19710.3.1事件處理機(jī)制19710.3.2事件處理示例20010.3.3事件適配器20610.4Swing常用組件20810.4.1標(biāo)簽20810.4.2按鈕20910.4.3文本框21310.4.4文本區(qū)21510.4.5列表21510.4.6組合框21610.4.7對(duì)話框22110.4.8計(jì)時(shí)器22510.4.9菜單組件22510.5Swing 組件應(yīng)用22710.5.1圖片瀏覽器22710.5.2文本編輯器231本章小結(jié)236習(xí)題10236第11章JavaFX23711.1JavaFX概述23711.1.1JavaFX的發(fā)展23711.1.2JavaFX架構(gòu)圖23711.2JavaFX程序23811.2.1場(chǎng)景Scene23811.2.2JavaFX應(yīng)用程序的生命周期23811.2.3JavaFX應(yīng)用程序23811.3Java FX布局23911.3.1FlowPane23911.3.orderPane24111.3.3HBox24211.3.4VBox24311.3.5GridPane24411.3.6StackPane24611.4事件處理24711.4.1事件24711.4.2事件分發(fā)流程24911.4.3事件處理25011.5JavaFX UI組件25711.5.1標(biāo)簽25711.5.2按鈕25711.5.3文本框25911.5.4文本區(qū)25911.5.5菜單組件26111.5.6文件選擇器26211.6在UI控件上使用CSS26611.6.1創(chuàng)建樣式26611.6.2JavaFX CSS選擇器26711.6.3美化UI控件26811.6.4使用setStyle()方法設(shè)置樣式269本章小結(jié)269習(xí)題11270第12章JDBC27112.1驅(qū)動(dòng)程序的下載27212.2創(chuàng)建到數(shù)據(jù)庫(kù)的連接27212.3使用Statement執(zhí)行SQL語(yǔ)句27312.3.1executeUpdate27312.3.2executeQuery27612.4使用PreparedStatement執(zhí)行SQL語(yǔ)句27712.4.1executeUpdate27712.4.2executeQuery27912.5事務(wù)27912.6得到ResultSet中的記錄數(shù)28212.6.1執(zhí)行另一條SQL語(yǔ)句28212.6.2操作游標(biāo)28212.7驗(yàn)證登錄283本章小結(jié)284習(xí)題12284第13章集合類28513.1用Java實(shí)現(xiàn)一個(gè)鏈?zhǔn)蕉褩?8613.2List28713.2.1自動(dòng)包裝和解包29013.2.2Stack29013.3Set29113.3.1SortedSet29313.3.2equals()、hashCode()和Comparable29313.3.3Comparator29513.4Map29613.4.1SortedMap30013.4.2Properties30013.4.3EnumMap30213.5Stream30313.5.1Stream的概念30313.5.2常用方法303本章小結(jié)305習(xí)題13305第14章Java相關(guān)框架30614.1Spring30614.1.1DI30614.1.2JDBC30914.1.3事務(wù)支持31414.2Hibernate31714.2.1用xml定義類和表之間的關(guān)系31714.2.2用注釋定義類和表之間的關(guān)系321本章小結(jié)322習(xí)題14323
第二部分實(shí)驗(yàn)實(shí)驗(yàn)ⅠJDK的安裝、配置及Java程序的編譯和運(yùn)行327
實(shí)驗(yàn)ⅡJava的基本語(yǔ)法328實(shí)驗(yàn)ⅢJava的類繼承機(jī)制、接口329
實(shí)驗(yàn)ⅣJava的輸入機(jī)制330實(shí)驗(yàn)ⅤJava的輸出機(jī)制331
實(shí)驗(yàn)Ⅵ綜合性程序設(shè)計(jì)簡(jiǎn)單學(xué)生信息管理系統(tǒng)(序列化版)332實(shí)驗(yàn)Ⅶ綜合性程序設(shè)計(jì)簡(jiǎn)單學(xué)生信息管理系統(tǒng)(GUI版)334
實(shí)驗(yàn)Ⅷ綜合性程序設(shè)計(jì)簡(jiǎn)單學(xué)生信息管理系統(tǒng)(數(shù)據(jù)庫(kù)版)335實(shí)驗(yàn)Ⅸ綜合性程序設(shè)計(jì)簡(jiǎn)單學(xué)生信息管理系統(tǒng)(集合版)336
附錄A從控制臺(tái)進(jìn)行輸入輸出337附錄BSQL語(yǔ)句簡(jiǎn)單介紹339B.1Java中數(shù)據(jù)類型和SQL類型的對(duì)應(yīng)關(guān)系339B.2SQL中對(duì)表的操作339B.3SQL中對(duì)表中記錄的操作339附錄CHSQLDB使用指南342C.1啟動(dòng)HSQLDB數(shù)據(jù)庫(kù)服務(wù)器342C.2用圖形界面管理HSQLDB數(shù)據(jù)庫(kù)服務(wù)器343C.3編譯、運(yùn)行JDBC程序343C.4幾個(gè)SQL語(yǔ)句的例子344C.5幾個(gè)JDBC的例子344附錄DGradle使用指南355附錄EEclipse使用指南358E.1設(shè)置Workspace目錄358E.2建立工程359E.3編輯、編譯、運(yùn)行Java類361E.4調(diào)試365E.5在工程中使用第三方類庫(kù)367E.6使用技巧369附錄F授課計(jì)劃和方法371參考文獻(xiàn)376