本書是講述Java程序設計的教材,介紹了數(shù)據(jù)類型、變量聲明、流程控制等基礎內容;面向對象有關的內容有類和方法的聲明、繼承、接口(default、static和私有方法)、抽象類(Lambda表達式、方法引用、Stream);接著介紹枚舉和異常處理。
基礎知識介紹完后,接著介紹Java中的庫,包括文件操作的輸入輸出、圖形有關的Swing和JavaFX、訪問數(shù)據(jù)庫的JDBC。Java中的常用數(shù)據(jù)結構在集合中介紹。
此次改版,增加了instanceof模式匹配、switch表達式的內容,對能簡化數(shù)據(jù)庫操作的Spring、hibernate進行了改寫。為了方便編譯、運行Spring和Hibernate程序,介紹了如何使用Gradle構建工具。為了配合正文中內容的學習,在附錄中介紹了SQL、HSQLDB、Gradle和Eclipse的使用。
本書由多位長期從事Java教學的教師根據(jù)實際授課經(jīng)驗編寫而成,通過在教學環(huán)境中試用,證明具有較好的教學效果。
本書由具有豐富實際項目開發(fā)經(jīng)驗和多年從事教學的教師編著,突出知識點的實際應用,摒棄單純的知識講解,相比同類教材本書具有如下特點:
1.以模擬制作現(xiàn)有軟件為起點,拋磚引玉,培養(yǎng)學生發(fā)現(xiàn)問題、解決實際問題的能力
本書配有生動和實用的例子,可以激發(fā)學生的興趣,如文件的壓縮、解壓縮,制作文本編輯器、制作圖片瀏覽器,簡單的音樂播放器等。
2.強化實用內容的講解,省略不常用的知識,增加常用知識所占的比重。
3.考慮到讀者具備前續(xù)知識的不同,以及正文知識點的擴充,以附錄的形式為正文中的用到的相關知識做補充,如常用的SQL語句的介紹,以及如何使用Ant來簡化java程序構建等。
4.本書教材示例編碼符合開發(fā)規(guī)范,可以訓練學生養(yǎng)成良好的編碼習慣。
本書的內容主要來自為軟件類專業(yè)本科生授課的講義,在正式出版前,經(jīng)過了兩年的試用,根據(jù)試用學生的反饋意見,作者對內容進行了不斷的修改、完善。出版后,根據(jù)一些教師和學生的反饋,在本次修訂時對部分內容做了調整。
本書介紹Java編程語言的基礎知識以實用為主,對于書中列的一些原理,學生不必死記,自己動手寫程序驗證一下就可得到同樣結論。初學時要以動手大量的寫程序為主。本書內容簡單,有時甚至有意對復雜的問題進行簡化,不注重全面,主要目的是使學生可以快速入手。本書減少了復雜的或初學不太重要的內容,盡量不讓學生有畏難情緒,愿意寫一些程序。在入手之后,可以自學,對書中某些知識進行補充。
要想學會一門編程語言,需要動手編程,正如我們的先輩所說: 紙上得來終覺淺,絕知此事要躬行。本書中的習題以及實驗的數(shù)量不多,學生要自己找問題來編程解決,完全可以從生活中遇到的問題出發(fā)。Java語言特別適于解決手工計算的問題,高等數(shù)學、線性代數(shù)、概率與統(tǒng)計中都有很多需要計算的地方,可以試著編程求解兩個矩陣相乘,求矩陣的分解等。學習數(shù)據(jù)結構時,可以用Java實現(xiàn)鏈表、鏈式堆棧等。這樣既可以學好基礎知識,又可以學習如何用程序解決實際問題。
在學會Java的基本語法后,繼續(xù)學習分為兩方面: 一個是學習使用Java自帶的類庫、第三方提供的類庫;另一個是自己寫類。這兩方面同樣重要,站在巨人的肩膀上才能看得更遠。同樣,每個人遇到的情況都是不一樣的,通用的類庫只能解決共有的問題,無法解決特定的問題。
學習Java有一個非常大的好處,那就是有詳細的幫助文檔。大家如果想學會Java,必須學會使用Java自帶類庫的API文檔。該文檔可以從Oracle網(wǎng)站下載。同樣,第三方類庫也提供有API文檔,這是極好的參考。大部分的第三方Java類庫都是開源的,Java類庫還提供了源代碼(JDK下src.zip中就是),可以同時下載源代碼,通過這些源代碼進行學習。如果對某一個方法不明白,可查看源代碼。Oracle還提供了在線Java tutorial(Java教程),其中提供了豐富的例子。在有些類的API文檔中有在線教程的鏈接,該教程也可以下載。
這些文檔有些有中文版,但建議不要看,盡量看英文版的,可以同時提高自己的英文水平。就目前來說,大量的資料和比較新的資料都是英文的,直接看英文資料就不用等待翻譯,何況有些資料根本沒有相應的翻譯。另外,中文翻譯的質量不太令人樂觀,有些中文翻譯似是而非,詞不達意,甚至和原文意思相反。開始看英文資料的時候會有點痛苦,只要堅持看一段時間,就會越來越順暢。
做事取得的結果取決于你的熱情、堅持、付出的程度!學編程也是如此!明天的幸福生活,來自于今天的努力!讓我們攜手共進,繼續(xù)創(chuàng)造更美好的生活!
本書由河南工業(yè)大學人工智能與大數(shù)據(jù)學院和信息科學與工程學院的老師合力編寫,按章節(jié)順序,第1、3章由宋敏完成、第4、5、10章由王社偉完成,第2章、第6~9章、第12~14章由劉繼承完成,第11章、實驗以及附錄由鄭麗萍完成。
感謝指出第1版書中錯誤和不足之處的老師和同學們!
編寫一本書并保證敘述清楚、內容正確,非親歷不能體會其中的艱辛。雖然如此,錯誤、敘述不清之處仍在所難免,歡迎大家指正。
作者2024年12月
第一部分Java程序設計第1章Java入門3
1.1Java簡介3
1.1.1Java的由來3
1.1.2Java的特點4
1.2Java平臺6
1.2.1Java平臺的構成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文檔標簽簡介16
1.6.3生成Java Doc文檔17
1.7JShell19
本章小結20
習題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強制類型轉換25
2.2引用類型26
2.3String26
2.4聲明變量27
2.4.1變量的賦值28
2.4.2變量的默認值28
2.4.3常量28
2.4.4變量的作用范圍28
2.5命名29
2.6運算符與表達式29
2.6.1算術運算符29
2.6.2關系運算符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
本章小結38
習題238第3章流程控制40
3.1分支語句40
3.1.1if…else語句40
3.1.2switch語句42
3.1.3switch表達式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跳轉語句51
3.3.1break語句51
3.3.2continue語句53
3.3.3return語句54
本章小結55
習題355第4章面向對象編程57
4.1面向對象編程概述57
4.2類的定義58
4.2.1類的基本結構58
4.2.2成員變量和局部變量60
4.2.3成員方法62
4.2.4Overloading68
4.2.5構造方法70
4.2.6this72
4.3對象72
4.3.1對象的創(chuàng)建73
4.3.2對象的使用74
4.3.3對象的清除74
4.3.4record快速構建對象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訪問權限修飾符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
本章小結103
習題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
本章小結119
習題5119第6章抽象類、接口和內部類121
6.1抽象類121
6.1.1聲明抽象類121
6.1.2繼承抽象類121
6.1.3抽象類的應用121
6.2接口124
6.2.1聲明接口124
6.2.2實現(xiàn)接口125
6.2.3default、private和static方法125
6.3內部類126
6.3.1內部類的概念126
6.3.2匿名內部類127
6.4Lambda表達式130
6.4.1定義130
6.4.2常見函數(shù)式接口131
6.4.3方法引用131
本章小結132
習題6133第7章枚舉134
7.1枚舉變量的定義134
7.2枚舉在if和switch語句中的應用134
本章小結136
習題7136第8章異常137
8.1異常信息137
8.2異常的處理138
8.3異常的類型140
8.4finally140
8.5throws141
8.6自定義異常141
8.7異常的進一步處理142
8.7.1在何處處理異常142
8.7.2同時處理父、子類異常143
8.7.3同時處理多個異常144
本章小結145
習題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
本章小結181
習題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標簽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 組件應用227
10.5.1圖片瀏覽器227
10.5.2文本編輯器231
本章小結236
習題10236第11章JavaFX237
11.1JavaFX概述237
11.1.1JavaFX的發(fā)展237
11.1.2JavaFX架構圖237
11.2JavaFX程序238
11.2.1場景Scene238
11.2.2JavaFX應用程序的生命周期238
11.2.3JavaFX應用程序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標簽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()方法設置樣式269
本章小結269
習題11270第12章JDBC271
12.1驅動程序的下載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事務279
12.6得到ResultSet中的記錄數(shù)282
12.6.1執(zhí)行另一條SQL語句282
12.6.2操作游標282
12.7驗證登錄283
本章小結284
習題12284第13章集合類285
13.1用Java實現(xiàn)一個鏈式堆棧286
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
本章小結305
習題13305第14章Java相關框架306
14.1Spring306
14.1.1DI306
14.1.2JDBC309
14.1.3事務支持314
14.2Hibernate317
14.2.1用xml定義類和表之間的關系317
14.2.2用注釋定義類和表之間的關系321
本章小結322
習題14323
第二部分實驗實驗ⅠJDK的安裝、配置及Java程序的編譯和運行327
實驗ⅡJava的基本語法328實驗ⅢJava的類繼承機制、接口329
實驗ⅣJava的輸入機制330實驗ⅤJava的輸出機制331
實驗Ⅵ綜合性程序設計簡單學生信息管理系統(tǒng)(序列化版)332實驗Ⅶ綜合性程序設計簡單學生信息管理系統(tǒng)(GUI版)334
實驗Ⅷ綜合性程序設計簡單學生信息管理系統(tǒng)(數(shù)據(jù)庫版)335實驗Ⅸ綜合性程序設計簡單學生信息管理系統(tǒng)(集合版)336
附錄A從控制臺進行輸入輸出337附錄BSQL語句簡單介紹339
B.1Java中數(shù)據(jù)類型和SQL類型的對應關系339
B.2SQL中對表的操作339
B.3SQL中對表中記錄的操作339附錄CHSQLDB使用指南342
C.1啟動HSQLDB數(shù)據(jù)庫服務器342
C.2用圖形界面管理HSQLDB數(shù)據(jù)庫服務器343
C.3編譯、運行JDBC程序343
C.4幾個SQL語句的例子344
C.5幾個JDBC的例子344附錄DGradle使用指南355附錄EEclipse使用指南358
E.1設置Workspace目錄358
E.2建立工程359
E.3編輯、編譯、運行Java類361
E.4調試365
E.5在工程中使用第三方類庫367
E.6使用技巧369附錄F授課計劃和方法371參考文獻376