本書是一部系統(tǒng)論述J a v a編程語言的立體化教材, 主要內(nèi)容包括引言、 開發(fā)環(huán)境搭建、 個J a v a程 序、 J a v a語法基礎(chǔ)、 數(shù)據(jù)類型、 運算符、 控制語句、 數(shù)組、 字符串、 面向?qū)ο蠡A(chǔ)、 對象、 繼承與多態(tài)、 抽象類與 接口、 J a v a常用類、 內(nèi)部類、 函數(shù)式編程、 異常處理、 對象集合、 泛型、 文件管理與I / O 流、 多線程編程、 網(wǎng)絡(luò) 編程、 S w i n g圖形用戶界面編程和數(shù)據(jù)庫編程。為了幫助學(xué)生消化吸收所學(xué)知識, 書中每章都安排若干同 步練習(xí)題, 并在附錄中提供了參考答案。此外, 為了便于教授本門課程的教師指導(dǎo)學(xué)生上機操作, 書中部 分章節(jié)還安排了上機實驗內(nèi)容。 本書可作為高等學(xué)校計算機軟件技術(shù)課程的教材, 也可作為社會培訓(xùn)機構(gòu)的培訓(xùn)教材, 還適合廣 大 J a v a初學(xué)者和J a v a開發(fā)的程序員等自學(xué)使用。
本書是一部Java程序設(shè)計立體化教學(xué)解決方案,配套24章教學(xué)課件、300多個實例程序代碼、700多分鐘微課視頻。本書特點如下:
? 致力于培養(yǎng)讀者的理論基礎(chǔ)與實踐能力;
? 實例設(shè)計緊密結(jié)合真實企業(yè)項目開發(fā);
? 開發(fā)環(huán)境采用企業(yè)級開發(fā)工具IntelliJ IDEA;
? Java開發(fā)工具包(JDK)采用Java 14;
? 實例設(shè)計的數(shù)據(jù)庫采用MySQL 8;
? 幫助讀者掌握搭建自己的Web服務(wù)器方法。
配書資源如下:
微課視頻 贈送《Java從小白到大!窌充N書微課視頻,幫助讀者掌握J(rèn)ava編程技術(shù)。
程序代碼 提供300多個實例程序代碼,均已通過驗證調(diào)試。
教學(xué)課件 提供全書24章的教學(xué)課件,供普通院校教師教學(xué)參考。
開源工具 提供本書配套開源工具軟件,便于讀者動手編程實踐使用。
教學(xué)大綱 便于普通院校教師教學(xué)參考,并供學(xué)生梳理本書知識脈絡(luò)。
考試大綱 便于普通院校教師考試參考,并指導(dǎo)學(xué)生復(fù)習(xí)課程測試。
實訓(xùn)項目 提供綜合實訓(xùn)項目及程序代碼,便于課程設(shè)計參考。
測試題庫 提供測試題庫,便于學(xué)生練習(xí)與鞏固本書知識。
考試題庫 提供考試題庫,便于教師組織課程測試參考。
Java語言已經(jīng)誕生20多年了,但是它不斷更新適應(yīng)時代的發(fā)展,變得更加成熟、更加易用。而且多年來,Java語言一直是受歡迎程度靠前的語言,這也說明了Java語言的生命力。特別是近幾年Oracle公司加快了Java版本迭代的步伐。為了滿足廣大讀者需要了解更多Java新功能的需求,我們推出了基于Java 14的Java新教程。
本書特色
(1) 使用業(yè)界流行的IntelliJ IDEA工具。
(2) 介紹Java 10增強局部變量類型推斷功能。
(3) 介紹Java 14中的switch語句。
(4) 介紹Java函數(shù)式編程和 Lambda 表達(dá)式。
(5) 在集合中增加介紹forEach()方法。
(6) 介紹搭建自己的Web服務(wù)器。
(7) 采用MySQL 8數(shù)據(jù)庫。
立體化圖書
本書采用立體化圖書形式,包含紙質(zhì)書、教學(xué)課件、程序源代碼和答疑服務(wù)等內(nèi)容。
讀者對象
本書是一本Java編程語言入門圖書。無論是計算機相關(guān)專業(yè)的大學(xué)生,還是從事軟件開發(fā)工作的職場人,這本書都適合。但如果想更深入地學(xué)習(xí)Java應(yīng)用技術(shù),則需要選擇其他圖書。
使用書中源代碼
書中包括300多個完整示例和兩個完整案例項目的源代碼,讀者可以到清華大學(xué)出版社網(wǎng)站本書頁面下載。
下載本書源代碼并解壓代碼,會看到如圖1所示的目錄結(jié)構(gòu)。
配套源代碼大部分是通過IntelliJ IDEA工具創(chuàng)建的項目,讀者可以通過IntelliJ IDEA工具打開這些項目。
如果讀者使用的IntelliJ IDEA工具的歡迎界面如圖2所示,則單擊Open or Import按鈕,打開如圖3所示的項目對話框,找到IntelliJ IDEA項目文件夾,即HelloProj的文件夾。如果讀者已經(jīng)進(jìn)入IntelliJ IDEA工具,則可以通過選擇菜單FileOpen命令打開如圖3所示的項目對話框。
致謝
在此感謝清華大學(xué)出版社的盛東亮編輯給我們提出了寶貴的意見。感謝智捷課堂團(tuán)隊的趙志榮、趙大羽、關(guān)錦華、閆婷嬌、劉佳笑和趙浩丞參與本書部分內(nèi)容的寫作。感謝趙浩丞從專業(yè)的角度修改書中的圖片,力求更加真實完美地奉獻(xiàn)給廣大讀者。感謝我的家人容忍我的忙碌,以及對我的關(guān)心和照顧,使我能抽出這么多時間,專心地編寫此書。
由于Java更新迭代很快,且作者水平有限,書中難免存在瑕疵或不妥之處,請讀者提出寶貴修改意見,以便再版改進(jìn)。
關(guān)東升2022年6月
關(guān)東升 一個在IT領(lǐng)域摸爬滾打20多年的資深程序員、知名培訓(xùn)專家、暢銷書作家。曾參與設(shè)計和開發(fā)北京市公交一卡通大型項目,以及國家農(nóng)產(chǎn)品追溯系統(tǒng)、金融系統(tǒng)微博等移動客戶端項目,并在App Store發(fā)布多款游戲和應(yīng)用軟件。長期為中國移動、中國聯(lián)通、南方航空、中石油、工商銀行、平安銀行和天津港務(wù)局等企事業(yè)單位提供培訓(xùn)服務(wù)。先后出版了《iOS開發(fā)指南》《從零開始學(xué)Swift》《Android網(wǎng)絡(luò)游戲開發(fā)實戰(zhàn)》《Cocos2d-x實戰(zhàn)》《Java從小白到大牛》《Python從小白到大!贰禟otlin從小白到大!返40多部圖書。
第1章引言
1.1Java語言的歷史
1.2Java語言的特點
1.3Java平臺
1.3.1Java SE
1.3.2Java EE
1.3.3Java ME
1.4Java虛擬機
1.5本章小結(jié)
1.6同步練習(xí)
第2章開發(fā)環(huán)境搭建
2.1JDK工具包
2.1.1Windows平臺安裝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章個Java程序
3.1使用IntelliJ IDEA 實現(xiàn)
3.1.1創(chuàng)建項目
3.1.2創(chuàng)建類
3.1.3運行程序
3.2文本編輯工具 JDK實現(xiàn)
3.2.1編寫源代碼文件
3.2.2編譯程序
3.2.3運行程序
3.3代碼解釋
3.4本章小結(jié)
3.5同步練習(xí)
3.6上機實驗: 世界,你好
第4章Java語法基礎(chǔ)
4.1標(biāo)識符和關(guān)鍵字
4.1.1標(biāo)識符
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浮點類型
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自動類型轉(zhuǎn)換
5.7.2強制類型轉(zhuǎn)換
5.8引用數(shù)據(jù)類型
5.9本章小結(jié)
5.10同步練習(xí)
第6章運算符
6.1算術(shù)運算符
6.1.1一元算術(shù)運算符
6.1.2二元算術(shù)運算符
6.1.3算術(shù)賦值運算符
6.2關(guān)系運算符
6.3邏輯運算符
6.4位運算符
6.5其他運算符
6.6運算符優(yōu)先級
6.7本章小結(jié)
6.8同步練習(xí)
第7章控制語句
7.1分支語句
7.1.1if語句
7.1.2switch語句
7.1.3Java 14中switch語句新特性
7.2循環(huán)語句
7.2.1while語句
7.2.2dowhile語句
7.2.3for語句
7.2.4增強for語句
7.3跳轉(zhuǎn)語句
7.3.1break語句
7.3.2continue語句
7.4本章小結(jié)
7.5同步練習(xí)
7.6上機實驗: 計算水仙花數(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上機實驗: 排序數(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上機實驗: 身份證號碼識別
第10章面向?qū)ο蠡A(chǔ)
10.1面向?qū)ο缶幊?/p>
10.2面向?qū)ο蟮娜齻基本特性
10.3類
10.3.1類聲明
10.3.2類體
10.4方法重載
10.5封裝性與訪問控制
10.5.1私有級別
10.5.2默認(rèn)級別
10.5.3保護(hù)級別
10.5.4公有級別
10.6靜態(tài)變量和靜態(tài)方法
10.7靜態(tài)代碼塊
10.8本章小結(jié)
10.9同步練習(xí)
第11章對象
11.1創(chuàng)建對象
11.2空對象
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對象銷毀
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抽象類聲明和實現(xiàn)
13.2接口
13.2.1抽象類與接口區(qū)別
13.2.2接口聲明和實現(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對象比較方法
14.2包裝類
14.2.1數(shù)值包裝類
14.2.2Character類
14.2.3Boolean類
14.2.4自動裝箱/拆箱
14.3Math類
14.4大數(shù)值
14.4.1BigInteger
14.4.2BigDecimal
14.5日期時間相關(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實例成員內(nèi)部類
15.2.2靜態(tài)成員內(nèi)部類
15.3局部內(nèi)部類
15.4匿名內(nèi)部類
15.5本章小結(jié)
15.6同步練習(xí)
第16章函數(shù)式編程
16.1Lambda表達(dá)式概述
16.1.1從一個示例開始
16.1.2Lambda表達(dá)式實現(xiàn)
16.1.3函數(shù)式接口
16.2Lambda表達(dá)式簡化形式
16.2.1省略參數(shù)類型
16.2.2省略參數(shù)小括號
16.2.3省略return語句和大括號
16.3使用Lambda表達(dá)式作為參數(shù)
16.4訪問變量
16.4.1訪問成員變量
16.4.2捕獲局部變量
16.5方法引用
16.6本章小結(jié)
16.7同步練習(xí)
16.8上機實驗: 找出素數(shù)
第17章異常處理
17.1從一個問題開始
17.2異常類繼承層次
17.2.1Throwable類
17.2.2Error和Exception
17.2.3受檢查異常和運行時異常
17.3捕獲異常
17.3.1trycatch語句
17.3.2多catch代碼塊
17.3.3trycatch語句嵌套
17.3.4多重捕獲
17.4釋放資源
17.4.1finally代碼塊
17.4.2自動資源管理
17.5throws與聲明方法拋出異常
17.6自定義異常類
17.7throw與顯式拋出異常
17.8本章小結(jié)
17.9同步練習(xí)
17.10上機實驗: 自己的異常處理類
第18章對象集合
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一個問題的思考
19.2使用泛型
19.3自定義泛型類
19.4自定義泛型接口
19.5泛型方法
19.6本章小結(jié)
19.7同步練習(xí)
19.8上機實驗: 編寫自己的泛型類
第20章文件管理與I/O流
20.1文件管理
20.1.1File類
20.1.2案例: 文件過濾
20.2I/O流概述
20.2.1Java流設(shè)計理念
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上機實驗: 讀寫日期
第21章多線程編程
21.1基礎(chǔ)知識
21.1.1進(jìn)程
21.1.2線程
21.1.3主線程
21.2創(chuàng)建子線程
21.2.1實現(xiàn)Runnable接口
21.2.2繼承Thread線程類
21.2.3使用匿名內(nèi)部類和Lambda表達(dá)式實現(xiàn)線程體
21.3線程的狀態(tài)
21.4線程管理
21.4.1線程優(yōu)先級
21.4.2等待線程結(jié)束
21.4.3線程讓步
21.4.4線程停止
21.5線程安全
21.5.1臨界資源問題
21.5.2多線程同步
21.6線程間通信
21.7本章小結(jié)
21.8同步練習(xí)
21.9上機實驗: 時鐘應(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通信過程
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庫
22.4.3JSON數(shù)據(jù)編碼和解碼
22.4.4案例: 聊天工具
22.5訪問互聯(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請求
22.5.6使用HttpURLConnection發(fā)送POST請求
22.5.7案例: Downloader
22.6本章小結(jié)
22.7同步練習(xí)
22.8上機實驗: 解析來自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案例: 圖書庫存
23.7本章小結(jié)
23.8同步練習(xí)
23.9上機實驗: 展示W(wǎng)eb數(shù)據(jù)
第24章數(shù)據(jù)庫編程
24.1數(shù)據(jù)持久化技術(shù)概述
24.2MySQL數(shù)據(jù)庫管理系統(tǒng)
24.2.1數(shù)據(jù)庫安裝和配置
24.2.2登錄服務(wù)器
24.2.3常見的管理命令
24.3JDBC技術(shù)
24.3.1JDBC API
24.3.2加載驅(qū)動程序
24.3.3建立數(shù)據(jù)庫連接
24.3.4三個重要接口
24.4案例: 數(shù)據(jù)CRUD操作
24.4.1數(shù)據(jù)庫編程一般過程
24.4.2數(shù)據(jù)查詢操作
24.4.3數(shù)據(jù)修改操作
24.5本章小結(jié)
24.6同步練習(xí)
24.7上機實驗: 從結(jié)構(gòu)化文檔遷移數(shù)據(jù)到數(shù)據(jù)庫
附錄同步練習(xí)參考答案