本書不僅介紹了Java的基本語(yǔ)法規(guī)則,還將J2SE平臺(tái)提供的功能融合進(jìn)來(lái),著重介紹在此平臺(tái)上如何編寫有實(shí)際用途的程序,培養(yǎng)學(xué)生良好的編程習(xí)慣,提高學(xué)生的工程應(yīng)用能力。本書在章節(jié)組織中以快速帶領(lǐng)讀者進(jìn)入工程編程領(lǐng)域?yàn)槟繕?biāo)。在編程工具的選擇上,介紹了目前主流且免費(fèi)的開(kāi)發(fā)工具:VS Code。在介紹完Java基礎(chǔ)的語(yǔ)法知識(shí)之后,立即開(kāi)始介紹Java中的常用工具類,包括數(shù)組、字符串、數(shù)學(xué)類、系統(tǒng)類等。學(xué)完這一部分,讀者已經(jīng)可以編寫有一定實(shí)用價(jià)值的程序了。在介紹完面向?qū)ο蟮母呒?jí)特性之后,著重介紹了在工程開(kāi)發(fā)中經(jīng)常會(huì)遇見(jiàn)的一些問(wèn)題,如字符編碼的轉(zhuǎn)換問(wèn)題、文件的內(nèi)容和屬性的處理問(wèn)題。在多線程章節(jié)中,著重介紹了線程的互斥和同步處理方法,這也是工程編程中的難點(diǎn)問(wèn)題。整本教材中提供了大量的編程實(shí)例,大多數(shù)問(wèn)題都以程序代碼來(lái)講解,代碼編寫遵循工程編程規(guī)范,充分體現(xiàn)了“talk is cheap, show me the code”的精神。
劉新,副教授,計(jì)算機(jī)專業(yè),已在清華大學(xué)出版社(2009)、浙江大學(xué)出版社(2012)、機(jī)械工業(yè)出版社出版(2017)Java教材,均為獨(dú)著或者主編。
第?1?章 入門準(zhǔn)備
1.1 Java?的運(yùn)行環(huán)境與虛擬機(jī)
1.2 Java?的開(kāi)發(fā)環(huán)境
1.2.1 JDK的安裝
1.2.2 設(shè)置系統(tǒng)環(huán)境變量
1.2.3 編寫一個(gè)簡(jiǎn)單的Java?應(yīng)用程序
1.2.4 編譯命令的使用
1.2.5 解釋執(zhí)行命令的使用
1.3 配置VS Code?集成開(kāi)發(fā)工具
第?2?章 編程初探
2.1 Java?語(yǔ)言概述
2.1.1 Java?語(yǔ)言特點(diǎn)
2.1.2 Java?程序的構(gòu)成
2.1.3 程序文本風(fēng)格
2.2 數(shù)據(jù)及類型轉(zhuǎn)換
2.2.1 基本數(shù)據(jù)類型
2.2.2 常量
2.2.3 變量
2.2.4 數(shù)據(jù)類型轉(zhuǎn)換
2.3 運(yùn)算符與表達(dá)式
2.3.1 算術(shù)運(yùn)算符和算術(shù)表達(dá)式
2.3.2 關(guān)系運(yùn)算符和關(guān)系表達(dá)式
2.3.3 邏輯運(yùn)算符和邏輯表達(dá)式
2.3.4 條件運(yùn)算符和條件表達(dá)式
2.3.5 位運(yùn)算符和位運(yùn)算表達(dá)式
2.3.6 賦值運(yùn)算符和賦值表達(dá)式
2.3.7 表達(dá)式的求值順序
2.4 流程控制語(yǔ)句
2.4.1 順序語(yǔ)句
2.4.2 分支語(yǔ)句
2.4.3 循環(huán)語(yǔ)句
2.5 控制臺(tái)輸入和輸出
2.5.1 控制臺(tái)輸入類Scanner
2.5.2 格式化輸出?printf
2.6 應(yīng)用實(shí)例
2.6.1 求最大公約數(shù)和最小公倍數(shù)
2.6.2 Fibonacci?數(shù)列
2.6.3 拆分?jǐn)?shù)字和進(jìn)制轉(zhuǎn)換
2.6.4 輸出九九口訣表
第?3?章 面向?qū)ο笕腴T
3.1 面向?qū)ο蟮幕靖拍?br>3.1.1 對(duì)象
3.1.2 類
3.1.3 消息
3.1.4 面向?qū)ο蟮?4?個(gè)基本特征
3.2 類與對(duì)象
3.2.1 類的聲明和定義
3.2.2 對(duì)象的使用
3.3 成員變量
3.3.1 成員變量的定義
3.3.2 成員變量的訪問(wèn)權(quán)限
3.3.3 實(shí)例成員變量和靜態(tài)成員變量
3.4 成員方法
3.4.1 方法的聲明和定義
3.4.2 方法的調(diào)用
3.4.3 隱含參數(shù)?this
3.5 構(gòu)造方法
3.5.1 無(wú)參數(shù)構(gòu)造方法的定義和使用
3.5.2 帶參數(shù)構(gòu)造方法的定義和使用
3.5.3 this?關(guān)鍵字和構(gòu)造方法的調(diào)用
3.6 靜態(tài)方法
3.6.1 靜態(tài)方法的聲明和定義
3.6.2 靜態(tài)方法和實(shí)例方法的區(qū)別
3.6.3 靜態(tài)代碼塊
3.6.4 再論靜態(tài)成員變量
3.7 main()方法和命令行參數(shù)
3.8 編程實(shí)例:學(xué)生類示例
第?4?章 常用工具類
4.1 數(shù)組
4.1.1 一維數(shù)組
4.1.2 for-each?循環(huán)
4.1.3 二維數(shù)組
4.1.4 編程實(shí)例?1:數(shù)組排序
4.1.5 編程實(shí)例?2:楊輝三角
4.2 字符串
4.2.1 String?對(duì)象
4.2.2 StringBuffer?對(duì)象
4.2.3 編程實(shí)例?3:字符串排序
4.3 Runtime?類
4.3.1 內(nèi)存管理
4.3.2 執(zhí)行其他程序
4.4 System?類
4.4.1 利用?currentTimeMillis()記錄程序執(zhí)行的時(shí)間
4.4.2 利用?exit()退出虛擬機(jī)
4.4.3 獲取環(huán)境屬性
4.5 Math?類
4.5.1 利用隨機(jī)數(shù)求π值
4.5.2 利用三角函數(shù)求π值
4.5.3 指數(shù)和對(duì)數(shù)函數(shù)
4.5.4 取整函數(shù)
4.6 Random?類的使用
4.7 日歷類
4.7.1 Date?類的使用
4.7.2 使用SimpleDateFormat?格式化輸出時(shí)間
4.7.3 Calendar?類的特色
4.7.4 編程實(shí)例?4:利用GregorianCalendar?輸出日歷
4.7.5 JSR日期時(shí)間包
4.8 Formatter?類
4.8.1 Formatter?的簡(jiǎn)單使用
4.8.2 時(shí)間格式轉(zhuǎn)換符詳解
4.8.3 格式說(shuō)明符語(yǔ)法圖
4.9 類型包裝器
第?5?章 面向?qū)ο蟾呒?jí)特性
5.1 繼承的基本原理
5.2 子類對(duì)父類的繼承
5.3 繼承機(jī)制
5.3.1 屬性的隱藏
5.3.2 方法的覆蓋
5.3.3 構(gòu)造方法沒(méi)有繼承機(jī)制
5.3.4 父類變量引用子類對(duì)象
5.3.5 繼承的內(nèi)部處理
5.4 super?關(guān)鍵字
5.4.1 用?super?引用父類的成員
5.4.2 使用?super?調(diào)用父類的構(gòu)造方法
5.5 接口與多重繼承
5.5.1 接口的定義
5.5.2 接口的繼承
5.5.3 接口的實(shí)現(xiàn)
5.6 重載
5.6.1 普通方法的重載
5.6.2 構(gòu)造方法的重載
5.6.3 重載的解析
5.6.4 重載與覆蓋的區(qū)別
5.7 運(yùn)行時(shí)多態(tài)
5.7.1 實(shí)例方法的運(yùn)行時(shí)多態(tài)
5.7.2 成員變量運(yùn)行時(shí)的表現(xiàn)
5.7.3 靜態(tài)方法運(yùn)行時(shí)的表現(xiàn)
5.8 編程實(shí)例:圖形類示例
第?6?章 包和特殊類
6.1 包
6.1.1 包的創(chuàng)建
6.1.2 包的使用
6.1.3 JAR文件的創(chuàng)建和使用
6.1.4 JDK中的常用包
6.2 抽象類與抽象方法
6.2.1 抽象方法的聲明
6.2.2 抽象類的定義
6.2.3 抽象方法與回調(diào)函數(shù)
6.3 最終類與最終方法
6.4 內(nèi)部類
6.4.1 內(nèi)部類的定義
6.4.2 內(nèi)部類訪問(wèn)外部類的成員
6.4.3 內(nèi)部類之間的相互使用
6.4.4 在外部使用內(nèi)部類
6.4.5 匿名內(nèi)部類
6.4.6 內(nèi)部類的作用
第?7?章 異常處理機(jī)制
7.1 異常機(jī)制簡(jiǎn)介
7.1.1 基本概念
7.1.2 異常處理的作用
7.1.3 Java?的異常處理機(jī)制
7.1.4 異常類的層次結(jié)構(gòu)
7.2 異常處理類型
7.2.1 運(yùn)行時(shí)異常
7.2.2 檢查型異常
7.2.3 自定義異常
7.3 異常處理機(jī)制
7.3.1 捕獲和處理異常
7.3.2 拋出異常
7.3.3 try-catch-finally?語(yǔ)句的嵌套
7.3.4 try-with-resource?語(yǔ)句
7.3.5 用戶自定義異常
7.4 編程實(shí)例:使用異常機(jī)制來(lái)實(shí)現(xiàn)鍵盤輸入
第?8?章 文件處理
8.1 文件和輸入/輸出流
8.2 字節(jié)流
8.2.1 InputStream?中的方法
8.2.2 OutputStream?中的方法
8.2.3 文件輸入流FileInputStream
8.2.4 文件輸出流FileOutputStream
8.2.5 編程實(shí)例?1:保存用戶輸入到文件
8.2.6 編程實(shí)例?2:顯示文件內(nèi)容
8.2.7 編程實(shí)例?3:文件的復(fù)制
8.2.8 順序輸入流
8.2.9 管道輸入流
8.2.10 過(guò)濾輸入/輸出流
8.3 字符流
8.3.1 InputStreamReader?類中的方法
8.3.2 OutputStreamWriter?類中的方法
8.3.3 編程實(shí)例?4:保存鍵盤輸入中文到文件
8.3.4 編程實(shí)例?5:文件編碼轉(zhuǎn)換
8.4 文件屬性處理
8.4.1 File?類中的方法
8.4.2 編程實(shí)例?6:文件列表
8.5 隨機(jī)訪問(wèn)文件
8.5.1 RandomAccessFile?類中的方法
8.5.2 編程實(shí)例?7:文件加密
8.6 序列化
第?9?章 多線程
9.1 線程的概念
9.1.1 多線程的特點(diǎn)
9.1.2 線程的狀態(tài)
9.2 Thread?類
9.2.1 Thread?類的構(gòu)造方法
9.2.2 Thread?類的常用方法
9.3 多線程程序的編寫
9.3.1 利用Thread?的子類創(chuàng)建線程
9.3.2 實(shí)現(xiàn)Runnable?接口創(chuàng)建線程
9.3.3 使用?isAlive()和?join()等待子線程結(jié)束
9.3.4 設(shè)置線程優(yōu)先級(jí)
9.4 線程的通信與協(xié)調(diào)
9.4.1 線程的互斥
9.4.2 線程的同步
9.4.3 暫停、恢復(fù)和停止線程
9.4.4 編程實(shí)例:生產(chǎn)者-消費(fèi)者問(wèn)題
9.5 利用Lock?接口實(shí)現(xiàn)線程互斥
第?10?章 網(wǎng)絡(luò)程序設(shè)計(jì)
10.1 與網(wǎng)絡(luò)相關(guān)的常用術(shù)語(yǔ)
10.2 InetAddress?類使用示例
10.2.1 編程實(shí)例?1:根據(jù)域名查找IP地址
10.3 URL類和URLConnection?類的使用
10.3.1 編程實(shí)例?2:用URL類實(shí)現(xiàn)一個(gè)簡(jiǎn)單的瀏覽器
10.3.2 編程實(shí)例?3:用URLConnection?類實(shí)現(xiàn)文件下載
10.4 Socket?的使用
10.4.1 客戶端創(chuàng)建Socket?對(duì)象
10.4.2 服務(wù)器端創(chuàng)建ServerSocket?對(duì)象
10.4.3 編程實(shí)例?4:一對(duì)一的通信
10.4.4 編程實(shí)例?5:一對(duì)多的通信
10.4.5 編程實(shí)例?6:簡(jiǎn)單的聊天程序
10.5 UDP數(shù)據(jù)報(bào)通信
10.5.1 DatagramSocket?的使用方法
10.5.2 DatagramPacket?的使用方法
10.5.3 編程實(shí)例?7:用UDP實(shí)現(xiàn)的聊天程序
第?11?章* 運(yùn)行時(shí)類型識(shí)別
11.1 RTTI的作用
11.2 用Class?類來(lái)加載對(duì)象
11.3 使用?getClass()方法獲取類信息
11.4 使用類標(biāo)記
11.5 使用關(guān)鍵字?instanceof?判斷所屬類
11.6 利用反射獲取運(yùn)行時(shí)類信息
11.6.1 使用?isInstance()方法判斷所屬類
11.6.2 獲取成員方法信息
11.6.3 獲取構(gòu)造方法信息
11.6.4 獲取類的成員屬性
11.6.5 根據(jù)方法的名稱來(lái)執(zhí)行方法
11.6.6 創(chuàng)建新的對(duì)象
11.6.7 改變屬性的值
11.6.8 使用數(shù)組
第?12?章* 泛型
12.1 泛型概述
12.1.1 編程實(shí)例?1:一個(gè)關(guān)于泛型的簡(jiǎn)單例子
12.1.2 編程實(shí)例?2:帶兩個(gè)類型參數(shù)的泛型類
12.2 泛型的基礎(chǔ)知識(shí)
12.2.1 有界類型
12.2.2 通配符參數(shù)
12.2.3 泛型方法
12.2.4 泛型接口
12.3 泛型類的繼承
12.3.1 以泛型類為父類
12.3.2 以非泛型類為父類
12.3.3 運(yùn)行時(shí)類型識(shí)別
12.3.4 強(qiáng)制類型轉(zhuǎn)換
12.3.5 繼承規(guī)則
12.4 泛型的本質(zhì)
12.4.1 擦拭
12.4.2 擦拭帶來(lái)的錯(cuò)誤
12.5 泛型的局限
12.5.1 不能使用基本類型
12.5.2 不能使用泛型類異常
12.5.3 不能使用泛型數(shù)組
12.5.4 不能實(shí)例化參數(shù)類型對(duì)象
第?13?章* 集合
13.1 集合接口與抽象類
13.1.1 Collection?接口
13.1.2 Iterator?接口
13.1.3 AbstractCollection?抽象類
13.1.4 幾個(gè)常用術(shù)語(yǔ)
13.2 集合類的使用
13.2.1 順序表(ArrayList)使用示例
13.2.2 鏈表(LinkedList)使用示例
13.2.3 優(yōu)先隊(duì)列(PriorityQueue)使用示例
13.2.4 哈希集合(HashSet)使用示例
13.2.5 哈希映射類(HashMap)使用示例
13.2.6 有序樹(shù)(TreeSet)使用示例
13.2.7 有序樹(shù)映射類(TreeMap)使用示例
13.3 常用算法
13.3.1 Collections?中的簡(jiǎn)單算法
13.3.2 排序
13.3.3 二分查找
13.4 遺留的類和接口
13.4.1 Enumeration?接口簡(jiǎn)介
13.4.2 向量類(Vector)簡(jiǎn)介
13.4.3 棧(Stack)使用示例
13.4.4 字典(Dictionary)簡(jiǎn)介
13.4.5 哈希表(Hashtable)簡(jiǎn)介