Java語(yǔ)言已經(jīng)誕生20多年了,但是它不斷更新適應(yīng)時(shí)代的發(fā)展,變得更加成熟、更加易用。而且多年來(lái),Java語(yǔ)言一直是受歡迎程度靠前的語(yǔ)言,這也說(shuō)明了Java語(yǔ)言的生命力。特別是近幾年Oracle公司加快了Java版本迭代的步伐。為了滿足廣大讀者需要了解更多Java新功能的需求,我們推出了基于Java 14的Java新教程。
本書(shū)特色
(1) 使用業(yè)界流行的IntelliJ IDEA工具。
(2) 介紹Java 10增強(qiáng)局部變量類(lèi)型推斷功能。
(3) 介紹Java 14中的switch語(yǔ)句。
(4) 介紹Java函數(shù)式編程和 Lambda 表達(dá)式。
(5) 在集合中增加介紹forEach()方法。
(6) 介紹搭建自己的Web服務(wù)器。
(7) 采用MySQL 8數(shù)據(jù)庫(kù)。
立體化圖書(shū)
本書(shū)采用立體化圖書(shū)形式,包含紙質(zhì)書(shū)、教學(xué)課件、程序源代碼和答疑服務(wù)等內(nèi)容。
讀者對(duì)象
本書(shū)是一本Java編程語(yǔ)言入門(mén)圖書(shū)。無(wú)論是計(jì)算機(jī)相關(guān)專(zhuān)業(yè)的大學(xué)生,還是從事軟件開(kāi)發(fā)工作的職場(chǎng)人,這本書(shū)都適合。但如果想更深入地學(xué)習(xí)Java應(yīng)用技術(shù),則需要選擇其他圖書(shū)。
使用書(shū)中源代碼
書(shū)中包括300多個(gè)完整示例和兩個(gè)完整案例項(xiàng)目的源代碼,讀者可以到清華大學(xué)出版社網(wǎng)站本書(shū)頁(yè)面下載。
下載本書(shū)源代碼并解壓代碼,會(huì)看到如圖1所示的目錄結(jié)構(gòu)。
配套源代碼大部分是通過(guò)IntelliJ IDEA工具創(chuàng)建的項(xiàng)目,讀者可以通過(guò)IntelliJ IDEA工具打開(kāi)這些項(xiàng)目。
如果讀者使用的IntelliJ IDEA工具的歡迎界面如圖2所示,則單擊Open or Import按鈕,打開(kāi)如圖3所示的項(xiàng)目對(duì)話框,找到IntelliJ IDEA項(xiàng)目文件夾,即HelloProj的文件夾。如果讀者已經(jīng)進(jìn)入IntelliJ IDEA工具,則可以通過(guò)選擇菜單FileOpen命令打開(kāi)如圖3所示的項(xiàng)目對(duì)話框。
致謝
在此感謝清華大學(xué)出版社的盛東亮編輯給我們提出了寶貴的意見(jiàn)。感謝智捷課堂團(tuán)隊(duì)的趙志榮、趙大羽、關(guān)錦華、閆婷嬌、劉佳笑和趙浩丞參與本書(shū)部分內(nèi)容的寫(xiě)作。感謝趙浩丞從專(zhuān)業(yè)的角度修改書(shū)中的圖片,力求更加真實(shí)完美地奉獻(xiàn)給廣大讀者。感謝我的家人容忍我的忙碌,以及對(duì)我的關(guān)心和照顧,使我能抽出這么多時(shí)間,專(zhuān)心地編寫(xiě)此書(shū)。
由于Java更新迭代很快,且作者水平有限,書(shū)中難免存在瑕疵或不妥之處,請(qǐng)讀者提出寶貴修改意見(jiàn),以便再版改進(jìn)。
關(guān)東升2022年6月
第1章引言
1.1Java語(yǔ)言的歷史
1.2Java語(yǔ)言的特點(diǎn)
1.3Java平臺(tái)
1.3.1Java SE
1.3.2Java EE
1.3.3Java ME
1.4Java虛擬機(jī)
1.5本章小結(jié)
1.6同步練習(xí)
第2章開(kāi)發(fā)環(huán)境搭建
2.1JDK工具包
2.1.1Windows平臺(tái)安裝JDK 14環(huán)境要求
2.1.2JDK下載和安裝
2.1.3設(shè)置環(huán)境變量
2.2IntelliJ IDEA開(kāi)發(fā)工具
2.2.1IntelliJ IDEA下載
2.2.2IntelliJ IDEA安裝
2.3使用文本編輯工具
2.4本章小結(jié)
2.5同步練習(xí)
第3章個(gè)Java程序
3.1使用IntelliJ IDEA 實(shí)現(xiàn)
3.1.1創(chuàng)建項(xiàng)目
3.1.2創(chuàng)建類(lèi)
3.1.3運(yùn)行程序
3.2文本編輯工具 JDK實(shí)現(xiàn)
3.2.1編寫(xiě)源代碼文件
3.2.2編譯程序
3.2.3運(yùn)行程序
3.3代碼解釋
3.4本章小結(jié)
3.5同步練習(xí)
3.6上機(jī)實(shí)驗(yàn): 世界,你好
第4章Java語(yǔ)法基礎(chǔ)
4.1標(biāo)識(shí)符和關(guān)鍵字
4.1.1標(biāo)識(shí)符
4.1.2關(guān)鍵字
4.2Java分隔符
4.3變量
4.3.1變量聲明
4.3.2使用Java 10局部變量類(lèi)型推斷
4.4常量
4.5Java源代碼文件
4.6包
4.6.1定義包
4.6.2引入包
4.6.3常用包
4.7本章小結(jié)
4.8同步練習(xí)
第5章數(shù)據(jù)類(lèi)型
5.1基本數(shù)據(jù)類(lèi)型
5.2整型類(lèi)型
5.3浮點(diǎn)類(lèi)型
5.4數(shù)值表示方式
5.4.1進(jìn)制數(shù)字表示
5.4.2指數(shù)表示
5.5字符類(lèi)型
5.6布爾類(lèi)型
5.7數(shù)值類(lèi)型相互轉(zhuǎn)換
5.7.1自動(dòng)類(lèi)型轉(zhuǎn)換
5.7.2強(qiáng)制類(lèi)型轉(zhuǎn)換
5.8引用數(shù)據(jù)類(lèi)型
5.9本章小結(jié)
5.10同步練習(xí)
第6章運(yùn)算符
6.1算術(shù)運(yùn)算符
6.1.1一元算術(shù)運(yùn)算符
6.1.2二元算術(shù)運(yùn)算符
6.1.3算術(shù)賦值運(yùn)算符
6.2關(guān)系運(yùn)算符
6.3邏輯運(yùn)算符
6.4位運(yùn)算符
6.5其他運(yùn)算符
6.6運(yùn)算符優(yōu)先級(jí)
6.7本章小結(jié)
6.8同步練習(xí)
第7章控制語(yǔ)句
7.1分支語(yǔ)句
7.1.1if語(yǔ)句
7.1.2switch語(yǔ)句
7.1.3Java 14中switch語(yǔ)句新特性
7.2循環(huán)語(yǔ)句
7.2.1while語(yǔ)句
7.2.2dowhile語(yǔ)句
7.2.3for語(yǔ)句
7.2.4增強(qiáng)for語(yǔ)句
7.3跳轉(zhuǎn)語(yǔ)句
7.3.1break語(yǔ)句
7.3.2continue語(yǔ)句
7.4本章小結(jié)
7.5同步練習(xí)
7.6上機(jī)實(shí)驗(yàn): 計(jì)算水仙花數(shù)
第8章數(shù)組
8.1一維數(shù)組
8.1.1數(shù)組聲明
8.1.2數(shù)組初始化
8.1.3案例: 數(shù)組合并
8.2多維數(shù)組
8.2.1二維數(shù)組聲明
8.2.2二維數(shù)組的初始化
8.2.3不規(guī)則數(shù)組
8.3本章小結(jié)
8.4同步練習(xí)
8.5上機(jī)實(shí)驗(yàn): 排序數(shù)列
第9章字符串
9.1Java中的字符串
9.2使用API文檔
9.3不可變字符串
9.3.1String
9.3.2字符串池
9.3.3字符串拼接
9.3.4字符串查找
9.3.5字符串比較
9.3.6字符串截取
9.4可變字符串
9.4.1StringBuffer和StringBuilder
9.4.2字符串追加
9.4.3字符串插入、刪除和替換
9.5本章小結(jié)
9.6同步練習(xí)
9.7上機(jī)實(shí)驗(yàn): 身份證號(hào)碼識(shí)別
第10章面向?qū)ο蠡A(chǔ)
10.1面向?qū)ο缶幊?/p>
10.2面向?qū)ο蟮娜齻(gè)基本特性
10.3類(lèi)
10.3.1類(lèi)聲明
10.3.2類(lèi)體
10.4方法重載
10.5封裝性與訪問(wèn)控制
10.5.1私有級(jí)別
10.5.2默認(rèn)級(jí)別
10.5.3保護(hù)級(jí)別
10.5.4公有級(jí)別
10.6靜態(tài)變量和靜態(tài)方法
10.7靜態(tài)代碼塊
10.8本章小結(jié)
10.9同步練習(xí)
第11章對(duì)象
11.1創(chuàng)建對(duì)象
11.2空對(duì)象
11.3構(gòu)造方法
11.3.1構(gòu)造方法概念
11.3.2默認(rèn)構(gòu)造方法
11.3.3構(gòu)造方法重載
11.3.4構(gòu)造方法封裝
11.4this關(guān)鍵字
11.5對(duì)象銷(xiāo)毀
11.6本章小結(jié)
11.7同步練習(xí)
第12章繼承與多態(tài)
12.1Java中的繼承
12.2調(diào)用父類(lèi)構(gòu)造方法
12.3成員變量隱藏和方法覆蓋
12.3.1成員變量隱藏
12.3.2方法的覆蓋
12.4多態(tài)
12.4.1多態(tài)概念
12.4.2引用類(lèi)型檢查
12.4.3引用類(lèi)型轉(zhuǎn)換
12.5再談final關(guān)鍵字
12.5.1final修飾變量
12.5.2final修飾類(lèi)
12.5.3final修飾方法
12.6本章小結(jié)
12.7同步練習(xí)
第13章抽象類(lèi)與接口
13.1抽象類(lèi)
13.1.1抽象類(lèi)概念
13.1.2抽象類(lèi)聲明和實(shí)現(xiàn)
13.2接口
13.2.1抽象類(lèi)與接口區(qū)別
13.2.2接口聲明和實(shí)現(xiàn)
13.2.3接口與多繼承
13.2.4接口繼承
13.2.5接口中的默認(rèn)方法和靜態(tài)方法
13.3本章小結(jié)
13.4同步練習(xí)
第14章Java常用類(lèi)
14.1Java根類(lèi)Object
14.1.1toString()方法
14.1.2對(duì)象比較方法
14.2包裝類(lèi)
14.2.1數(shù)值包裝類(lèi)
14.2.2Character類(lèi)
14.2.3Boolean類(lèi)
14.2.4自動(dòng)裝箱/拆箱
14.3Math類(lèi)
14.4大數(shù)值
14.4.1BigInteger
14.4.2BigDecimal
14.5日期時(shí)間相關(guān)類(lèi)
14.5.1Date類(lèi)
14.5.2日期格式化和解析
14.5.3Calendar類(lèi)
14.6本章小結(jié)
14.7同步練習(xí)
第15章內(nèi)部類(lèi)
15.1內(nèi)部類(lèi)概述
15.1.1內(nèi)部類(lèi)的作用
15.1.2內(nèi)部類(lèi)的分類(lèi)
15.2成員內(nèi)部類(lèi)
15.2.1實(shí)例成員內(nèi)部類(lèi)
15.2.2靜態(tài)成員內(nèi)部類(lèi)
15.3局部?jī)?nèi)部類(lèi)
15.4匿名內(nèi)部類(lèi)
15.5本章小結(jié)
15.6同步練習(xí)
第16章函數(shù)式編程
16.1Lambda表達(dá)式概述
16.1.1從一個(gè)示例開(kāi)始
16.1.2Lambda表達(dá)式實(shí)現(xiàn)
16.1.3函數(shù)式接口
16.2Lambda表達(dá)式簡(jiǎn)化形式
16.2.1省略參數(shù)類(lèi)型
16.2.2省略參數(shù)小括號(hào)
16.2.3省略return語(yǔ)句和大括號(hào)
16.3使用Lambda表達(dá)式作為參數(shù)
16.4訪問(wèn)變量
16.4.1訪問(wèn)成員變量
16.4.2捕獲局部變量
16.5方法引用
16.6本章小結(jié)
16.7同步練習(xí)
16.8上機(jī)實(shí)驗(yàn): 找出素?cái)?shù)
第17章異常處理
17.1從一個(gè)問(wèn)題開(kāi)始
17.2異常類(lèi)繼承層次
17.2.1Throwable類(lèi)
17.2.2Error和Exception
17.2.3受檢查異常和運(yùn)行時(shí)異常
17.3捕獲異常
17.3.1trycatch語(yǔ)句
17.3.2多catch代碼塊
17.3.3trycatch語(yǔ)句嵌套
17.3.4多重捕獲
17.4釋放資源
17.4.1finally代碼塊
17.4.2自動(dòng)資源管理
17.5throws與聲明方法拋出異常
17.6自定義異常類(lèi)
17.7throw與顯式拋出異常
17.8本章小結(jié)
17.9同步練習(xí)
17.10上機(jī)實(shí)驗(yàn): 自己的異常處理類(lèi)
第18章對(duì)象集合
18.1集合概述
18.2List集合
18.2.1常用方法
18.2.2遍歷集合
18.3Set集合
18.3.1常用方法
18.3.2遍歷集合
18.4Map集合
18.4.1常用方法
18.4.2遍歷集合
18.5本章小結(jié)
18.6同步練習(xí)
第19章泛型
19.1一個(gè)問(wèn)題的思考
19.2使用泛型
19.3自定義泛型類(lèi)
19.4自定義泛型接口
19.5泛型方法
19.6本章小結(jié)
19.7同步練習(xí)
19.8上機(jī)實(shí)驗(yàn): 編寫(xiě)自己的泛型類(lèi)
第20章文件管理與I/O流
20.1文件管理
20.1.1File類(lèi)
20.1.2案例: 文件過(guò)濾
20.2I/O流概述
20.2.1Java流設(shè)計(jì)理念
20.2.2流類(lèi)繼承層次
20.3字節(jié)流
20.3.1InputStream抽象類(lèi)
20.3.2OutputStream抽象類(lèi)
20.3.3案例: 文件復(fù)制
20.3.4使用字節(jié)緩沖流
20.4字符流
20.4.1Reader抽象類(lèi)
20.4.2Writer抽象類(lèi)
20.4.3案例: 文件復(fù)制
20.4.4使用字符緩沖流
20.4.5字節(jié)流轉(zhuǎn)換為字符流
20.5本章小結(jié)
20.6同步練習(xí)
20.7上機(jī)實(shí)驗(yàn): 讀寫(xiě)日期
第21章多線程編程
21.1基礎(chǔ)知識(shí)
21.1.1進(jìn)程
21.1.2線程
21.1.3主線程
21.2創(chuàng)建子線程
21.2.1實(shí)現(xiàn)Runnable接口
21.2.2繼承Thread線程類(lèi)
21.2.3使用匿名內(nèi)部類(lèi)和Lambda表達(dá)式實(shí)現(xiàn)線程體
21.3線程的狀態(tài)
21.4線程管理
21.4.1線程優(yōu)先級(jí)
21.4.2等待線程結(jié)束
21.4.3線程讓步
21.4.4線程停止
21.5線程安全
21.5.1臨界資源問(wèn)題
21.5.2多線程同步
21.6線程間通信
21.7本章小結(jié)
21.8同步練習(xí)
21.9上機(jī)實(shí)驗(yàn): 時(shí)鐘應(yīng)用
第22章網(wǎng)絡(luò)編程
22.1網(wǎng)絡(luò)基礎(chǔ)
22.1.1網(wǎng)絡(luò)結(jié)構(gòu)
22.1.2TCP/IP協(xié)議
22.1.3IP地址
22.1.4端口
22.2TCP Socket低層次網(wǎng)絡(luò)編程
22.2.1TCP Socket通信概述
22.2.2TCP Socket通信過(guò)程
22.2.3Socket類(lèi)
22.2.4ServerSocket類(lèi)
22.2.5案例: 文件上傳工具
22.2.6案例: 聊天工具
22.3UDP Socket低層次網(wǎng)絡(luò)編程
22.3.1DatagramSocket類(lèi)
22.3.2DatagramPacket類(lèi)
22.3.3案例: 文件上傳工具
22.3.4案例: 聊天工具
22.4數(shù)據(jù)交換格式
22.4.1JSON文檔結(jié)構(gòu)
22.4.2使用第三方JSON庫(kù)
22.4.3JSON數(shù)據(jù)編碼和解碼
22.4.4案例: 聊天工具
22.5訪問(wèn)互聯(lián)網(wǎng)資源
22.5.1URL概念
22.5.2HTTP/HTTPS協(xié)議
22.5.3搭建自己的Web服務(wù)器
22.5.4使用URL類(lèi)
22.5.5使用HttpURLConnection發(fā)送GET請(qǐng)求
22.5.6使用HttpURLConnection發(fā)送POST請(qǐng)求
22.5.7案例: Downloader
22.6本章小結(jié)
22.7同步練習(xí)
22.8上機(jī)實(shí)驗(yàn): 解析來(lái)自Web的結(jié)構(gòu)化數(shù)據(jù)
第23章Swing圖形用戶界面編程
23.1Java圖形用戶界面技術(shù)
23.2Swing技術(shù)基礎(chǔ)
23.2.1Swing類(lèi)層次結(jié)構(gòu)
23.2.2Swing程序結(jié)構(gòu)
23.3事件處理模型
23.3.1采用內(nèi)部類(lèi)處理事件
23.3.2采用Lambda表達(dá)式處理事件
23.3.3使用適配器
23.4布局管理
23.4.1FlowLayout布局
23.4.2BorderLayout布局
23.4.3GridLayout布局
23.4.4不使用布局管理器
23.5Swing組件
23.5.1標(biāo)簽和按鈕
23.5.2文本輸入組件
23.5.3復(fù)選框和單選按鈕
23.5.4下拉列表
23.5.5列表
23.5.6分隔面板
23.5.7表格
23.6案例: 圖書(shū)庫(kù)存
23.7本章小結(jié)
23.8同步練習(xí)
23.9上機(jī)實(shí)驗(yàn): 展示W(wǎng)eb數(shù)據(jù)
第24章數(shù)據(jù)庫(kù)編程
24.1數(shù)據(jù)持久化技術(shù)概述
24.2MySQL數(shù)據(jù)庫(kù)管理系統(tǒng)
24.2.1數(shù)據(jù)庫(kù)安裝和配置
24.2.2登錄服務(wù)器
24.2.3常見(jiàn)的管理命令
24.3JDBC技術(shù)
24.3.1JDBC API
24.3.2加載驅(qū)動(dòng)程序
24.3.3建立數(shù)據(jù)庫(kù)連接
24.3.4三個(gè)重要接口
24.4案例: 數(shù)據(jù)CRUD操作
24.4.1數(shù)據(jù)庫(kù)編程一般過(guò)程
24.4.2數(shù)據(jù)查詢(xún)操作
24.4.3數(shù)據(jù)修改操作
24.5本章小結(jié)
24.6同步練習(xí)
24.7上機(jī)實(shí)驗(yàn): 從結(jié)構(gòu)化文檔遷移數(shù)據(jù)到數(shù)據(jù)庫(kù)
附錄同步練習(xí)參考答案