本書是一部系統(tǒng)論述J a v a編程語言的立體化教材, 主要內容包括引言、 開發(fā)環(huán)境搭建、 個J a v a程 序、 J a v a語法基礎、 數(shù)據(jù)類型、 運算符、 控制語句、 數(shù)組、 字符串、 面向對象基礎、 對象、 繼承與多態(tài)、 抽象類與 接口、 J a v a常用類、 內部類、 函數(shù)式編程、 異常處理、 對象集合、 泛型、 文件管理與I / O 流、 多線程編程、 網(wǎng)絡 編程、 S w i n g圖形用戶界面編程和數(shù)據(jù)庫編程。為了幫助學生消化吸收所學知識, 書中每章都安排若干同 步練習題, 并在附錄中提供了參考答案。此外, 為了便于教授本門課程的教師指導學生上機操作, 書中部 分章節(jié)還安排了上機實驗內容。 本書可作為高等學校計算機軟件技術課程的教材, 也可作為社會培訓機構的培訓教材, 還適合廣 大 J a v a初學者和J a v a開發(fā)的程序員等自學使用。
本書是一部Java程序設計立體化教學解決方案,配套24章教學課件、300多個實例程序代碼、700多分鐘微課視頻。本書特點如下:
? 致力于培養(yǎng)讀者的理論基礎與實踐能力;
? 實例設計緊密結合真實企業(yè)項目開發(fā);
? 開發(fā)環(huán)境采用企業(yè)級開發(fā)工具IntelliJ IDEA;
? Java開發(fā)工具包(JDK)采用Java 14;
? 實例設計的數(shù)據(jù)庫采用MySQL 8;
? 幫助讀者掌握搭建自己的Web服務器方法。
配書資源如下:
微課視頻 贈送《Java從小白到大!窌充N書微課視頻,幫助讀者掌握Java編程技術。
程序代碼 提供300多個實例程序代碼,均已通過驗證調試。
教學課件 提供全書24章的教學課件,供普通院校教師教學參考。
開源工具 提供本書配套開源工具軟件,便于讀者動手編程實踐使用。
教學大綱 便于普通院校教師教學參考,并供學生梳理本書知識脈絡。
考試大綱 便于普通院校教師考試參考,并指導學生復習課程測試。
實訓項目 提供綜合實訓項目及程序代碼,便于課程設計參考。
測試題庫 提供測試題庫,便于學生練習與鞏固本書知識。
考試題庫 提供考試題庫,便于教師組織課程測試參考。
Java語言已經誕生20多年了,但是它不斷更新適應時代的發(fā)展,變得更加成熟、更加易用。而且多年來,Java語言一直是受歡迎程度靠前的語言,這也說明了Java語言的生命力。特別是近幾年Oracle公司加快了Java版本迭代的步伐。為了滿足廣大讀者需要了解更多Java新功能的需求,我們推出了基于Java 14的Java新教程。
本書特色
(1) 使用業(yè)界流行的IntelliJ IDEA工具。
(2) 介紹Java 10增強局部變量類型推斷功能。
(3) 介紹Java 14中的switch語句。
(4) 介紹Java函數(shù)式編程和 Lambda 表達式。
(5) 在集合中增加介紹forEach()方法。
(6) 介紹搭建自己的Web服務器。
(7) 采用MySQL 8數(shù)據(jù)庫。
立體化圖書
本書采用立體化圖書形式,包含紙質書、教學課件、程序源代碼和答疑服務等內容。
讀者對象
本書是一本Java編程語言入門圖書。無論是計算機相關專業(yè)的大學生,還是從事軟件開發(fā)工作的職場人,這本書都適合。但如果想更深入地學習Java應用技術,則需要選擇其他圖書。
使用書中源代碼
書中包括300多個完整示例和兩個完整案例項目的源代碼,讀者可以到清華大學出版社網(wǎng)站本書頁面下載。
下載本書源代碼并解壓代碼,會看到如圖1所示的目錄結構。
配套源代碼大部分是通過IntelliJ IDEA工具創(chuàng)建的項目,讀者可以通過IntelliJ IDEA工具打開這些項目。
如果讀者使用的IntelliJ IDEA工具的歡迎界面如圖2所示,則單擊Open or Import按鈕,打開如圖3所示的項目對話框,找到IntelliJ IDEA項目文件夾,即HelloProj的文件夾。如果讀者已經進入IntelliJ IDEA工具,則可以通過選擇菜單FileOpen命令打開如圖3所示的項目對話框。
致謝
在此感謝清華大學出版社的盛東亮編輯給我們提出了寶貴的意見。感謝智捷課堂團隊的趙志榮、趙大羽、關錦華、閆婷嬌、劉佳笑和趙浩丞參與本書部分內容的寫作。感謝趙浩丞從專業(yè)的角度修改書中的圖片,力求更加真實完美地奉獻給廣大讀者。感謝我的家人容忍我的忙碌,以及對我的關心和照顧,使我能抽出這么多時間,專心地編寫此書。
由于Java更新迭代很快,且作者水平有限,書中難免存在瑕疵或不妥之處,請讀者提出寶貴修改意見,以便再版改進。
關東升2022年6月
關東升 一個在IT領域摸爬滾打20多年的資深程序員、知名培訓專家、暢銷書作家。曾參與設計和開發(fā)北京市公交一卡通大型項目,以及國家農產品追溯系統(tǒng)、金融系統(tǒng)微博等移動客戶端項目,并在App Store發(fā)布多款游戲和應用軟件。長期為中國移動、中國聯(lián)通、南方航空、中石油、工商銀行、平安銀行和天津港務局等企事業(yè)單位提供培訓服務。先后出版了《iOS開發(fā)指南》《從零開始學Swift》《Android網(wǎng)絡游戲開發(fā)實戰(zhàn)》《Cocos2d-x實戰(zhàn)》《Java從小白到大!贰禤ython從小白到大!贰禟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本章小結
1.6同步練習
第2章開發(fā)環(huán)境搭建
2.1JDK工具包
2.1.1Windows平臺安裝JDK 14環(huán)境要求
2.1.2JDK下載和安裝
2.1.3設置環(huán)境變量
2.2IntelliJ IDEA開發(fā)工具
2.2.1IntelliJ IDEA下載
2.2.2IntelliJ IDEA安裝
2.3使用文本編輯工具
2.4本章小結
2.5同步練習
第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本章小結
3.5同步練習
3.6上機實驗: 世界,你好
第4章Java語法基礎
4.1標識符和關鍵字
4.1.1標識符
4.1.2關鍵字
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本章小結
4.8同步練習
第5章數(shù)據(jù)類型
5.1基本數(shù)據(jù)類型
5.2整型類型
5.3浮點類型
5.4數(shù)值表示方式
5.4.1進制數(shù)字表示
5.4.2指數(shù)表示
5.5字符類型
5.6布爾類型
5.7數(shù)值類型相互轉換
5.7.1自動類型轉換
5.7.2強制類型轉換
5.8引用數(shù)據(jù)類型
5.9本章小結
5.10同步練習
第6章運算符
6.1算術運算符
6.1.1一元算術運算符
6.1.2二元算術運算符
6.1.3算術賦值運算符
6.2關系運算符
6.3邏輯運算符
6.4位運算符
6.5其他運算符
6.6運算符優(yōu)先級
6.7本章小結
6.8同步練習
第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跳轉語句
7.3.1break語句
7.3.2continue語句
7.4本章小結
7.5同步練習
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本章小結
8.4同步練習
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本章小結
9.6同步練習
9.7上機實驗: 身份證號碼識別
第10章面向對象基礎
10.1面向對象編程
10.2面向對象的三個基本特性
10.3類
10.3.1類聲明
10.3.2類體
10.4方法重載
10.5封裝性與訪問控制
10.5.1私有級別
10.5.2默認級別
10.5.3保護級別
10.5.4公有級別
10.6靜態(tài)變量和靜態(tài)方法
10.7靜態(tài)代碼塊
10.8本章小結
10.9同步練習
第11章對象
11.1創(chuàng)建對象
11.2空對象
11.3構造方法
11.3.1構造方法概念
11.3.2默認構造方法
11.3.3構造方法重載
11.3.4構造方法封裝
11.4this關鍵字
11.5對象銷毀
11.6本章小結
11.7同步練習
第12章繼承與多態(tài)
12.1Java中的繼承
12.2調用父類構造方法
12.3成員變量隱藏和方法覆蓋
12.3.1成員變量隱藏
12.3.2方法的覆蓋
12.4多態(tài)
12.4.1多態(tài)概念
12.4.2引用類型檢查
12.4.3引用類型轉換
12.5再談final關鍵字
12.5.1final修飾變量
12.5.2final修飾類
12.5.3final修飾方法
12.6本章小結
12.7同步練習
第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接口中的默認方法和靜態(tài)方法
13.3本章小結
13.4同步練習
第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日期時間相關類
14.5.1Date類
14.5.2日期格式化和解析
14.5.3Calendar類
14.6本章小結
14.7同步練習
第15章內部類
15.1內部類概述
15.1.1內部類的作用
15.1.2內部類的分類
15.2成員內部類
15.2.1實例成員內部類
15.2.2靜態(tài)成員內部類
15.3局部內部類
15.4匿名內部類
15.5本章小結
15.6同步練習
第16章函數(shù)式編程
16.1Lambda表達式概述
16.1.1從一個示例開始
16.1.2Lambda表達式實現(xiàn)
16.1.3函數(shù)式接口
16.2Lambda表達式簡化形式
16.2.1省略參數(shù)類型
16.2.2省略參數(shù)小括號
16.2.3省略return語句和大括號
16.3使用Lambda表達式作為參數(shù)
16.4訪問變量
16.4.1訪問成員變量
16.4.2捕獲局部變量
16.5方法引用
16.6本章小結
16.7同步練習
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本章小結
17.9同步練習
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本章小結
18.6同步練習
第19章泛型
19.1一個問題的思考
19.2使用泛型
19.3自定義泛型類
19.4自定義泛型接口
19.5泛型方法
19.6本章小結
19.7同步練習
19.8上機實驗: 編寫自己的泛型類
第20章文件管理與I/O流
20.1文件管理
20.1.1File類
20.1.2案例: 文件過濾
20.2I/O流概述
20.2.1Java流設計理念
20.2.2流類繼承層次
20.3字節(jié)流
20.3.1InputStream抽象類
20.3.2OutputStream抽象類
20.3.3案例: 文件復制
20.3.4使用字節(jié)緩沖流
20.4字符流
20.4.1Reader抽象類
20.4.2Writer抽象類
20.4.3案例: 文件復制
20.4.4使用字符緩沖流
20.4.5字節(jié)流轉換為字符流
20.5本章小結
20.6同步練習
20.7上機實驗: 讀寫日期
第21章多線程編程
21.1基礎知識
21.1.1進程
21.1.2線程
21.1.3主線程
21.2創(chuàng)建子線程
21.2.1實現(xiàn)Runnable接口
21.2.2繼承Thread線程類
21.2.3使用匿名內部類和Lambda表達式實現(xiàn)線程體
21.3線程的狀態(tài)
21.4線程管理
21.4.1線程優(yōu)先級
21.4.2等待線程結束
21.4.3線程讓步
21.4.4線程停止
21.5線程安全
21.5.1臨界資源問題
21.5.2多線程同步
21.6線程間通信
21.7本章小結
21.8同步練習
21.9上機實驗: 時鐘應用
第22章網(wǎng)絡編程
22.1網(wǎng)絡基礎
22.1.1網(wǎng)絡結構
22.1.2TCP/IP協(xié)議
22.1.3IP地址
22.1.4端口
22.2TCP Socket低層次網(wǎng)絡編程
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)絡編程
22.3.1DatagramSocket類
22.3.2DatagramPacket類
22.3.3案例: 文件上傳工具
22.3.4案例: 聊天工具
22.4數(shù)據(jù)交換格式
22.4.1JSON文檔結構
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服務器
22.5.4使用URL類
22.5.5使用HttpURLConnection發(fā)送GET請求
22.5.6使用HttpURLConnection發(fā)送POST請求
22.5.7案例: Downloader
22.6本章小結
22.7同步練習
22.8上機實驗: 解析來自Web的結構化數(shù)據(jù)
第23章Swing圖形用戶界面編程
23.1Java圖形用戶界面技術
23.2Swing技術基礎
23.2.1Swing類層次結構
23.2.2Swing程序結構
23.3事件處理模型
23.3.1采用內部類處理事件
23.3.2采用Lambda表達式處理事件
23.3.3使用適配器
23.4布局管理
23.4.1FlowLayout布局
23.4.2BorderLayout布局
23.4.3GridLayout布局
23.4.4不使用布局管理器
23.5Swing組件
23.5.1標簽和按鈕
23.5.2文本輸入組件
23.5.3復選框和單選按鈕
23.5.4下拉列表
23.5.5列表
23.5.6分隔面板
23.5.7表格
23.6案例: 圖書庫存
23.7本章小結
23.8同步練習
23.9上機實驗: 展示W(wǎng)eb數(shù)據(jù)
第24章數(shù)據(jù)庫編程
24.1數(shù)據(jù)持久化技術概述
24.2MySQL數(shù)據(jù)庫管理系統(tǒng)
24.2.1數(shù)據(jù)庫安裝和配置
24.2.2登錄服務器
24.2.3常見的管理命令
24.3JDBC技術
24.3.1JDBC API
24.3.2加載驅動程序
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本章小結
24.6同步練習
24.7上機實驗: 從結構化文檔遷移數(shù)據(jù)到數(shù)據(jù)庫
附錄同步練習參考答案