本書是講述Java程序設(shè)計的教材,介紹了數(shù)據(jù)類型、變量聲明、流程控制等基礎(chǔ)內(nèi)容;面向?qū)ο笥嘘P(guān)的內(nèi)容有類和方法的聲明、繼承、接口(default、static和私有方法)、抽象類(Lambda表達(dá)式、方法引用、Stream);接著介紹枚舉和異常處理。
基礎(chǔ)知識介紹完后,接著介紹Java中的庫,包括文件操作的輸入輸出、圖形有關(guān)的Swing和JavaFX、訪問數(shù)據(jù)庫的JDBC。Java中的常用數(shù)據(jù)結(jié)構(gòu)在集合中介紹。
此次改版,增加了instanceof模式匹配、switch表達(dá)式的內(nèi)容,對能簡化數(shù)據(jù)庫操作的Spring、hibernate進(jìn)行了改寫。為了方便編譯、運行Spring和Hibernate程序,介紹了如何使用Gradle構(gòu)建工具。為了配合正文中內(nèi)容的學(xué)習(xí),在附錄中介紹了SQL、HSQLDB、Gradle和Eclipse的使用。
本書由多位長期從事Java教學(xué)的教師根據(jù)實際授課經(jīng)驗編寫而成,通過在教學(xué)環(huán)境中試用,證明具有較好的教學(xué)效果。
本書由具有豐富實際項目開發(fā)經(jīng)驗和多年從事教學(xué)的教師編著,突出知識點的實際應(yīng)用,摒棄單純的知識講解,相比同類教材本書具有如下特點:
1.以模擬制作現(xiàn)有軟件為起點,拋磚引玉,培養(yǎng)學(xué)生發(fā)現(xiàn)問題、解決實際問題的能力
本書配有生動和實用的例子,可以激發(fā)學(xué)生的興趣,如文件的壓縮、解壓縮,制作文本編輯器、制作圖片瀏覽器,簡單的音樂播放器等。
2.強化實用內(nèi)容的講解,省略不常用的知識,增加常用知識所占的比重。
3.考慮到讀者具備前續(xù)知識的不同,以及正文知識點的擴充,以附錄的形式為正文中的用到的相關(guān)知識做補充,如常用的SQL語句的介紹,以及如何使用Ant來簡化java程序構(gòu)建等。
4.本書教材示例編碼符合開發(fā)規(guī)范,可以訓(xùn)練學(xué)生養(yǎng)成良好的編碼習(xí)慣。
本書的內(nèi)容主要來自為軟件類專業(yè)本科生授課的講義,在正式出版前,經(jīng)過了兩年的試用,根據(jù)試用學(xué)生的反饋意見,作者對內(nèi)容進(jìn)行了不斷的修改、完善。出版后,根據(jù)一些教師和學(xué)生的反饋,在本次修訂時對部分內(nèi)容做了調(diào)整。
本書介紹Java編程語言的基礎(chǔ)知識以實用為主,對于書中列的一些原理,學(xué)生不必死記,自己動手寫程序驗證一下就可得到同樣結(jié)論。初學(xué)時要以動手大量的寫程序為主。本書內(nèi)容簡單,有時甚至有意對復(fù)雜的問題進(jìn)行簡化,不注重全面,主要目的是使學(xué)生可以快速入手。本書減少了復(fù)雜的或初學(xué)不太重要的內(nèi)容,盡量不讓學(xué)生有畏難情緒,愿意寫一些程序。在入手之后,可以自學(xué),對書中某些知識進(jìn)行補充。
要想學(xué)會一門編程語言,需要動手編程,正如我們的先輩所說: 紙上得來終覺淺,絕知此事要躬行。本書中的習(xí)題以及實驗的數(shù)量不多,學(xué)生要自己找問題來編程解決,完全可以從生活中遇到的問題出發(fā)。Java語言特別適于解決手工計算的問題,高等數(shù)學(xué)、線性代數(shù)、概率與統(tǒng)計中都有很多需要計算的地方,可以試著編程求解兩個矩陣相乘,求矩陣的分解等。學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu)時,可以用Java實現(xiàn)鏈表、鏈?zhǔn)蕉褩5。這樣既可以學(xué)好基礎(chǔ)知識,又可以學(xué)習(xí)如何用程序解決實際問題。
在學(xué)會Java的基本語法后,繼續(xù)學(xué)習(xí)分為兩方面: 一個是學(xué)習(xí)使用Java自帶的類庫、第三方提供的類庫;另一個是自己寫類。這兩方面同樣重要,站在巨人的肩膀上才能看得更遠(yuǎn)。同樣,每個人遇到的情況都是不一樣的,通用的類庫只能解決共有的問題,無法解決特定的問題。
學(xué)習(xí)Java有一個非常大的好處,那就是有詳細(xì)的幫助文檔。大家如果想學(xué)會Java,必須學(xué)會使用Java自帶類庫的API文檔。該文檔可以從Oracle網(wǎng)站下載。同樣,第三方類庫也提供有API文檔,這是極好的參考。大部分的第三方Java類庫都是開源的,Java類庫還提供了源代碼(JDK下src.zip中就是),可以同時下載源代碼,通過這些源代碼進(jìn)行學(xué)習(xí)。如果對某一個方法不明白,可查看源代碼。Oracle還提供了在線Java tutorial(Java教程),其中提供了豐富的例子。在有些類的API文檔中有在線教程的鏈接,該教程也可以下載。
這些文檔有些有中文版,但建議不要看,盡量看英文版的,可以同時提高自己的英文水平。就目前來說,大量的資料和比較新的資料都是英文的,直接看英文資料就不用等待翻譯,何況有些資料根本沒有相應(yīng)的翻譯。另外,中文翻譯的質(zhì)量不太令人樂觀,有些中文翻譯似是而非,詞不達(dá)意,甚至和原文意思相反。開始看英文資料的時候會有點痛苦,只要堅持看一段時間,就會越來越順暢。
做事取得的結(jié)果取決于你的熱情、堅持、付出的程度!學(xué)編程也是如此!明天的幸福生活,來自于今天的努力!讓我們攜手共進(jìn),繼續(xù)創(chuàng)造更美好的生活!
本書由河南工業(yè)大學(xué)人工智能與大數(shù)據(jù)學(xué)院和信息科學(xué)與工程學(xué)院的老師合力編寫,按章節(jié)順序,第1、3章由宋敏完成、第4、5、10章由王社偉完成,第2章、第6~9章、第12~14章由劉繼承完成,第11章、實驗以及附錄由鄭麗萍完成。
感謝指出第1版書中錯誤和不足之處的老師和同學(xué)們!
編寫一本書并保證敘述清楚、內(nèi)容正確,非親歷不能體會其中的艱辛。雖然如此,錯誤、敘述不清之處仍在所難免,歡迎大家指正。
作者2024年12月
第一部分Java程序設(shè)計第1章Java入門3
1.1Java簡介3
1.1.1Java的由來3
1.1.2Java的特點4
1.2Java平臺6
1.2.1Java平臺的構(gòu)成6
1.2.2Java平臺的版本6
1.2.3JRE 和 JDK7
1.2.4JDK的下載與安裝8
1.2.5環(huán)境變量的配置10
1.3Java程序的種類與開發(fā)流程12
1.3.1Java程序的種類12
1.3.2Java程序的開發(fā)流程12
1.4小試身手13
1.5Java API文檔的使用14
1.6Java Doc文檔15
1.6.1語法15
1.6.2文檔標(biāo)簽簡介16
1.6.3生成Java Doc文檔17
1.7JShell19
本章小結(jié)20
習(xí)題120第2章Java的基本語法21
2.1原始類型21
2.1.1整數(shù)類型22
2.1.2實數(shù)類型24
2.1.3字符型24
2.1.4布爾型25
2.1.5強制類型轉(zhuǎn)換25
2.2引用類型26
2.3String26
2.4聲明變量27
2.4.1變量的賦值28
2.4.2變量的默認(rèn)值28
2.4.3常量28
2.4.4變量的作用范圍28
2.5命名29
2.6運算符與表達(dá)式29
2.6.1算術(shù)運算符29
2.6.2關(guān)系運算符31
2.6.3邏輯運算符31
2.6.4位運算符33
2.6.5賦值運算符34
2.6.6其他運算符 35
2.7數(shù)組35
2.7.1一維數(shù)組36
2.7.2多維數(shù)組37
本章小結(jié)38
習(xí)題238第3章流程控制40
3.1分支語句40
3.1.1if…else語句40
3.1.2switch語句42
3.1.3switch表達(dá)式45
3.2循環(huán)語句46
3.2.1while語句46
3.2.2do…while語句46
3.2.3for語句47
3.2.4for…each語句49
3.2.5嵌套循環(huán)50
3.2.6循環(huán)語句的對比50
3.3跳轉(zhuǎn)語句51
3.3.1break語句51
3.3.2continue語句53
3.3.3return語句54
本章小結(jié)55
習(xí)題355第4章面向?qū)ο缶幊?7
4.1面向?qū)ο缶幊谈攀?7
4.2類的定義58
4.2.1類的基本結(jié)構(gòu)58
4.2.2成員變量和局部變量60
4.2.3成員方法62
4.2.4Overloading68
4.2.5構(gòu)造方法70
4.2.6this72
4.3對象72
4.3.1對象的創(chuàng)建73
4.3.2對象的使用74
4.3.3對象的清除74
4.3.4record快速構(gòu)建對象75
4.4static76
4.4.1類變量76
4.4.2類方法78
4.4.3靜態(tài)語句塊78
4.5包和模塊79
4.5.1包的定義80
4.5.2編譯和運行包中的類80
4.5.3import語句82
4.5.4模塊83
4.6訪問權(quán)限修飾符86
4.6.1private86
4.6.2friendly86
4.6.3protected87
4.6.4public88
4.7常用類88
4.7.1Object類88
4.7.2String類與StringBuffer類90
4.7.3數(shù)值包裝類94
4.7.4Math類95
4.7.5Random類97
4.7.6處理日期的類97
4.7.7Arrays類100
4.7.8Objects類102
本章小結(jié)103
習(xí)題4103第5章繼承105
5.1繼承的語法105
5.2成員變量的隱藏和方法的覆蓋106
5.3super107
5.4final和sealed 108
5.5多態(tài)110
5.6繼承與組合114
5.7初始化順序116
本章小結(jié)119
習(xí)題5119第6章抽象類、接口和內(nèi)部類121
6.1抽象類121
6.1.1聲明抽象類121
6.1.2繼承抽象類121
6.1.3抽象類的應(yīng)用121
6.2接口124
6.2.1聲明接口124
6.2.2實現(xiàn)接口125
6.2.3default、private和static方法125
6.3內(nèi)部類126
6.3.1內(nèi)部類的概念126
6.3.2匿名內(nèi)部類127
6.4Lambda表達(dá)式130
6.4.1定義130
6.4.2常見函數(shù)式接口131
6.4.3方法引用131
本章小結(jié)132
習(xí)題6133第7章枚舉134
7.1枚舉變量的定義134
7.2枚舉在if和switch語句中的應(yīng)用134
本章小結(jié)136
習(xí)題7136第8章異常137
8.1異常信息137
8.2異常的處理138
8.3異常的類型140
8.4finally140
8.5throws141
8.6自定義異常141
8.7異常的進(jìn)一步處理142
8.7.1在何處處理異常142
8.7.2同時處理父、子類異常143
8.7.3同時處理多個異常144
本章小結(jié)145
習(xí)題8145第9章輸入輸出146
9.1File146
9.1.1創(chuàng)建一個File對象146
9.1.2訪問File對象的方法147
9.1.3列出目錄下的文件148
9.1.4列出目錄下滿足條件的文件148
9.1.5Path151
9.2輸入流152
9.2.1字節(jié)輸入流152
9.2.2try…with…resources語句157
9.2.3字符輸入流158
9.2.4Scanner162
9.2.5從控制臺輸入163
9.3輸出流167
9.3.1字節(jié)輸出流167
9.3.2字符輸出流170
9.3.3格式化輸出172
9.4數(shù)字字節(jié)輸入輸出流173
9.4.1DataInputStream和DataOutputStream173
9.4.2RandomAccessFile175
9.5對象輸入輸出流176
9.6壓縮、解壓縮流178
9.6.1壓縮178
9.6.2解壓縮179
9.7Files工具類180
本章小結(jié)181
習(xí)題9182第10章圖形用戶界面184
10.1AWT包與Swing包184
10.1.1輔助類186
10.1.2組件類186
10.1.3容器類186
10.2版面布局管理器190
10.2.1FlowLayout191
10.2.orderLayout192
10.2.3GridLayout194
10.2.4CardLayout195
10.2.5無布局管理器196
10.3事件處理197
10.3.1事件處理機制197
10.3.2事件處理示例200
10.3.3事件適配器206
10.4Swing常用組件208
10.4.1標(biāo)簽208
10.4.2按鈕209
10.4.3文本框213
10.4.4文本區(qū)215
10.4.5列表215
10.4.6組合框216
10.4.7對話框221
10.4.8計時器225
10.4.9菜單組件225
10.5Swing 組件應(yīng)用227
10.5.1圖片瀏覽器227
10.5.2文本編輯器231
本章小結(jié)236
習(xí)題10236第11章JavaFX237
11.1JavaFX概述237
11.1.1JavaFX的發(fā)展237
11.1.2JavaFX架構(gòu)圖237
11.2JavaFX程序238
11.2.1場景Scene238
11.2.2JavaFX應(yīng)用程序的生命周期238
11.2.3JavaFX應(yīng)用程序238
11.3Java FX布局239
11.3.1FlowPane239
11.3.orderPane241
11.3.3HBox242
11.3.4VBox243
11.3.5GridPane244
11.3.6StackPane246
11.4事件處理247
11.4.1事件247
11.4.2事件分發(fā)流程249
11.4.3事件處理250
11.5JavaFX UI組件257
11.5.1標(biāo)簽257
11.5.2按鈕257
11.5.3文本框259
11.5.4文本區(qū)259
11.5.5菜單組件261
11.5.6文件選擇器262
11.6在UI控件上使用CSS266
11.6.1創(chuàng)建樣式266
11.6.2JavaFX CSS選擇器267
11.6.3美化UI控件268
11.6.4使用setStyle()方法設(shè)置樣式269
本章小結(jié)269
習(xí)題11270第12章JDBC271
12.1驅(qū)動程序的下載272
12.2創(chuàng)建到數(shù)據(jù)庫的連接272
12.3使用Statement執(zhí)行SQL語句273
12.3.1executeUpdate273
12.3.2executeQuery276
12.4使用PreparedStatement執(zhí)行SQL語句277
12.4.1executeUpdate277
12.4.2executeQuery279
12.5事務(wù)279
12.6得到ResultSet中的記錄數(shù)282
12.6.1執(zhí)行另一條SQL語句282
12.6.2操作游標(biāo)282
12.7驗證登錄283
本章小結(jié)284
習(xí)題12284第13章集合類285
13.1用Java實現(xiàn)一個鏈?zhǔn)蕉褩?86
13.2List287
13.2.1自動包裝和解包290
13.2.2Stack290
13.3Set291
13.3.1SortedSet293
13.3.2equals()、hashCode()和Comparable293
13.3.3Comparator295
13.4Map296
13.4.1SortedMap300
13.4.2Properties300
13.4.3EnumMap302
13.5Stream303
13.5.1Stream的概念303
13.5.2常用方法303
本章小結(jié)305
習(xí)題13305第14章Java相關(guān)框架306
14.1Spring306
14.1.1DI306
14.1.2JDBC309
14.1.3事務(wù)支持314
14.2Hibernate317
14.2.1用xml定義類和表之間的關(guān)系317
14.2.2用注釋定義類和表之間的關(guān)系321
本章小結(jié)322
習(xí)題14323
第二部分實驗實驗ⅠJDK的安裝、配置及Java程序的編譯和運行327
實驗ⅡJava的基本語法328實驗ⅢJava的類繼承機制、接口329
實驗ⅣJava的輸入機制330實驗ⅤJava的輸出機制331
實驗Ⅵ綜合性程序設(shè)計簡單學(xué)生信息管理系統(tǒng)(序列化版)332實驗Ⅶ綜合性程序設(shè)計簡單學(xué)生信息管理系統(tǒng)(GUI版)334
實驗Ⅷ綜合性程序設(shè)計簡單學(xué)生信息管理系統(tǒng)(數(shù)據(jù)庫版)335實驗Ⅸ綜合性程序設(shè)計簡單學(xué)生信息管理系統(tǒng)(集合版)336
附錄A從控制臺進(jìn)行輸入輸出337附錄BSQL語句簡單介紹339
B.1Java中數(shù)據(jù)類型和SQL類型的對應(yīng)關(guān)系339
B.2SQL中對表的操作339
B.3SQL中對表中記錄的操作339附錄CHSQLDB使用指南342
C.1啟動HSQLDB數(shù)據(jù)庫服務(wù)器342
C.2用圖形界面管理HSQLDB數(shù)據(jù)庫服務(wù)器343
C.3編譯、運行JDBC程序343
C.4幾個SQL語句的例子344
C.5幾個JDBC的例子344附錄DGradle使用指南355附錄EEclipse使用指南358
E.1設(shè)置Workspace目錄358
E.2建立工程359
E.3編輯、編譯、運行Java類361
E.4調(diào)試365
E.5在工程中使用第三方類庫367
E.6使用技巧369附錄F授課計劃和方法371參考文獻(xiàn)376