Java語(yǔ)言已經(jīng)誕生20多年了,但是它不斷更新適應(yīng)時(shí)代的發(fā)展,變得更加成熟、更加易用。而且多年來(lái),Java語(yǔ)言一直是受歡迎程度靠前的語(yǔ)言,這也說(shuō)明了Java語(yǔ)言的生命力。特別是近幾年Oracle公司加快了Java版本迭代的步伐。為了滿足廣大讀者需要了解更多Java新功能的需求,我們推出了基于Java 14的Java新教程。
本書特色
(1) 使用業(yè)界流行的IntelliJ IDEA工具。
(2) 介紹Java 10增強(qiáng)局部變量類型推斷功能。
(3) 介紹Java 14中的switch語(yǔ)句。
(4) 介紹Java函數(shù)式編程和 Lambda 表達(dá)式。
(5) 在集合中增加介紹forEach()方法。
(6) 介紹搭建自己的Web服務(wù)器。
(7) 采用MySQL 8數(shù)據(jù)庫(kù)。
立體化圖書
本書采用立體化圖書形式,包含紙質(zhì)書、教學(xué)課件、程序源代碼和答疑服務(wù)等內(nèi)容。
讀者對(duì)象
本書是一本Java編程語(yǔ)言入門圖書。無(wú)論是計(jì)算機(jī)相關(guān)專業(yè)的大學(xué)生,還是從事軟件開發(fā)工作的職場(chǎng)人,這本書都適合。但如果想更深入地學(xué)習(xí)Java應(yīng)用技術(shù),則需要選擇其他圖書。
使用書中源代碼
書中包括300多個(gè)完整示例和兩個(gè)完整案例項(xiàng)目的源代碼,讀者可以到清華大學(xué)出版社網(wǎng)站本書頁(yè)面下載。
下載本書源代碼并解壓代碼,會(huì)看到如圖1所示的目錄結(jié)構(gòu)。
配套源代碼大部分是通過(guò)IntelliJ IDEA工具創(chuàng)建的項(xiàng)目,讀者可以通過(guò)IntelliJ IDEA工具打開這些項(xiàng)目。
如果讀者使用的IntelliJ IDEA工具的歡迎界面如圖2所示,則單擊Open or Import按鈕,打開如圖3所示的項(xiàng)目對(duì)話框,找到IntelliJ IDEA項(xiàng)目文件夾,即HelloProj的文件夾。如果讀者已經(jīng)進(jìn)入IntelliJ IDEA工具,則可以通過(guò)選擇菜單FileOpen命令打開如圖3所示的項(xiàng)目對(duì)話框。
致謝
在此感謝清華大學(xué)出版社的盛東亮編輯給我們提出了寶貴的意見(jiàn)。感謝智捷課堂團(tuán)隊(duì)的趙志榮、趙大羽、關(guān)錦華、閆婷嬌、劉佳笑和趙浩丞參與本書部分內(nèi)容的寫作。感謝趙浩丞從專業(yè)的角度修改書中的圖片,力求更加真實(shí)完美地奉獻(xiàn)給廣大讀者。感謝我的家人容忍我的忙碌,以及對(duì)我的關(guān)心和照顧,使我能抽出這么多時(shí)間,專心地編寫此書。
由于Java更新迭代很快,且作者水平有限,書中難免存在瑕疵或不妥之處,請(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章開發(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開發(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)建類
3.1.3運(yùn)行程序
3.2文本編輯工具 JDK實(shí)現(xiàn)
3.2.1編寫源代碼文件
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局部變量類型推斷
4.4常量
4.5Java源代碼文件
4.6包
4.6.1定義包
4.6.2引入包
4.6.3常用包
4.7本章小結(jié)
4.8同步練習(xí)
第5章數(shù)據(jù)類型
5.1基本數(shù)據(jù)類型
5.2整型類型
5.3浮點(diǎn)類型
5.4數(shù)值表示方式
5.4.1進(jìn)制數(shù)字表示
5.4.2指數(shù)表示
5.5字符類型
5.6布爾類型
5.7數(shù)值類型相互轉(zhuǎn)換
5.7.1自動(dòng)類型轉(zhuǎn)換
5.7.2強(qiáng)制類型轉(zhuǎn)換
5.8引用數(shù)據(jù)類型
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類
10.3.1類聲明
10.3.2類體
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ì)象銷毀
11.6本章小結(jié)
11.7同步練習(xí)
第12章繼承與多態(tài)
12.1Java中的繼承
12.2調(diào)用父類構(gòu)造方法
12.3成員變量隱藏和方法覆蓋
12.3.1成員變量隱藏
12.3.2方法的覆蓋
12.4多態(tài)
12.4.1多態(tài)概念
12.4.2引用類型檢查
12.4.3引用類型轉(zhuǎn)換
12.5再談final關(guān)鍵字
12.5.1final修飾變量
12.5.2final修飾類
12.5.3final修飾方法
12.6本章小結(jié)
12.7同步練習(xí)
第13章抽象類與接口
13.1抽象類
13.1.1抽象類概念
13.1.2抽象類聲明和實(shí)現(xiàn)
13.2接口
13.2.1抽象類與接口區(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常用類
14.1Java根類Object
14.1.1toString()方法
14.1.2對(duì)象比較方法
14.2包裝類
14.2.1數(shù)值包裝類
14.2.2Character類
14.2.3Boolean類
14.2.4自動(dòng)裝箱/拆箱
14.3Math類
14.4大數(shù)值
14.4.1BigInteger
14.4.2BigDecimal
14.5日期時(shí)間相關(guān)類
14.5.1Date類
14.5.2日期格式化和解析
14.5.3Calendar類
14.6本章小結(jié)
14.7同步練習(xí)
第15章內(nèi)部類
15.1內(nèi)部類概述
15.1.1內(nèi)部類的作用
15.1.2內(nèi)部類的分類
15.2成員內(nèi)部類
15.2.1實(shí)例成員內(nèi)部類
15.2.2靜態(tài)成員內(nèi)部類
15.3局部?jī)?nèi)部類
15.4匿名內(nèi)部類
15.5本章小結(jié)
15.6同步練習(xí)
第16章函數(shù)式編程
16.1Lambda表達(dá)式概述
16.1.1從一個(gè)示例開始
16.1.2Lambda表達(dá)式實(shí)現(xiàn)
16.1.3函數(shù)式接口
16.2Lambda表達(dá)式簡(jiǎn)化形式
16.2.1省略參數(shù)類型
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)題開始
17.2異常類繼承層次
17.2.1Throwable類
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自定義異常類
17.7throw與顯式拋出異常
17.8本章小結(jié)
17.9同步練習(xí)
17.10上機(jī)實(shí)驗(yàn): 自己的異常處理類
第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自定義泛型類
19.4自定義泛型接口
19.5泛型方法
19.6本章小結(jié)
19.7同步練習(xí)
19.8上機(jī)實(shí)驗(yàn): 編寫自己的泛型類
第20章文件管理與I/O流
20.1文件管理
20.1.1File類
20.1.2案例: 文件過(guò)濾
20.2I/O流概述
20.2.1Java流設(shè)計(jì)理念
20.2.2流類繼承層次
20.3字節(jié)流
20.3.1InputStream抽象類
20.3.2OutputStream抽象類
20.3.3案例: 文件復(fù)制
20.3.4使用字節(jié)緩沖流
20.4字符流
20.4.1Reader抽象類
20.4.2Writer抽象類
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): 讀寫日期
第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線程類
21.2.3使用匿名內(nè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類
22.2.4ServerSocket類
22.2.5案例: 文件上傳工具
22.2.6案例: 聊天工具
22.3UDP Socket低層次網(wǎng)絡(luò)編程
22.3.1DatagramSocket類
22.3.2DatagramPacket類
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類
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類層次結(jié)構(gòu)
23.2.2Swing程序結(jié)構(gòu)
23.3事件處理模型
23.3.1采用內(nè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案例: 圖書庫(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ù)查詢操作
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í)參考答案