關(guān)于我們
書單推薦
新書推薦
|
Java語言程序設(shè)計(jì)(第3版)
本書以最新的Java SE 8為基礎(chǔ),全面講解Java編程語言、Java面向?qū)ο蠹夹g(shù)和Java核心類庫。全書共18章,主要內(nèi)容包括Java語言基礎(chǔ)(數(shù)據(jù)類型、運(yùn)算符與表達(dá)式、程序流程控制)、類與對象基礎(chǔ)、數(shù)組與字符串、Java面向?qū)ο筇卣鳎惖睦^承與多態(tài)、內(nèi)部類與注解類型、接口與Lambda表達(dá)式)、常用核心類、泛型與集合框架、異常處理、輸入輸出、JavaFX圖形界面及事件處理、常用控件、JDBC數(shù)據(jù)庫編程、并發(fā)編程基礎(chǔ)、網(wǎng)絡(luò)編程等。
本書知識點(diǎn)全面,體系結(jié)構(gòu)清晰,重點(diǎn)突出,文字準(zhǔn)確,內(nèi)容組織循序漸進(jìn),并有大量精選示例。每章配有精心設(shè)計(jì)的編程練習(xí)題,幫助讀者理解掌握編程技術(shù)。本書提供教學(xué)課件、程序源代碼以及部分教學(xué)視頻與習(xí)題解答等資源。 本書可作為高等院校計(jì)算機(jī)專業(yè)或相關(guān)專業(yè)的“Java程序設(shè)計(jì)”或“面向?qū)ο蟪绦蛟O(shè)計(jì)”課程的教材,也可作為Java認(rèn)證考試及編程愛好者的參考資料。
本書知識點(diǎn)全面,體系結(jié)構(gòu)清晰,重點(diǎn)突出、文字準(zhǔn)確,內(nèi)容組織循序漸進(jìn),并有大量精選的示例和配套素材,使讀者學(xué)習(xí)起來容易理解和掌握。在內(nèi)容上緊跟Java語言的*發(fā)展,介紹了Java SE 8的大部分新特征。30小時(shí)視頻講解
前言 Java是一門卓越的程序設(shè)計(jì)語言,同時(shí),它也是基于Java語言、從移動(dòng)應(yīng)用開發(fā)到企業(yè)級開發(fā)的平臺(tái)。隨著Web的發(fā)展,應(yīng)用Web成為大型應(yīng)用開發(fā)的主流方式,Java憑借其“編寫一次,到處運(yùn)行”的特性很好地支持了互聯(lián)網(wǎng)應(yīng)用所要求的跨平臺(tái)能力,成為服務(wù)器端開發(fā)的主流語言,F(xiàn)在人類已進(jìn)入移動(dòng)互聯(lián)網(wǎng)時(shí)代,而Java依然是當(dāng)之無愧的主角。 Java是一門經(jīng)典的面向?qū)ο笳Z言,同時(shí)也是一門優(yōu)秀的教學(xué)語言。Java擁有優(yōu)雅和簡明的語法以及豐富的類庫,讓編程人員盡可能地將精力集中在業(yè)務(wù)領(lǐng)域的問題求解上。 本版在第2版的基礎(chǔ)上增加了Java SE 8的新特性,如接口的默認(rèn)方法和靜態(tài)方法、Lambda表達(dá)式、新的日期/時(shí)間API、Stream API,圖形用戶界面用JavaFX替換了Swing,另外增加了Java網(wǎng)絡(luò)編程一章,其他章節(jié)也做了部分修訂。 本書作為面向初學(xué)者的教程,編寫和取材著重體現(xiàn)Java面向?qū)ο缶幊趟枷牒兔嫦騿栴}求解的理念。本書采用基礎(chǔ)優(yōu)先的方式,從編程基礎(chǔ)開始,逐步引入面向?qū)ο笏枷搿? 本書包含三大主題,這是一名專業(yè)Java程序員必須熟練掌握的內(nèi)容。
全書共18章,主要內(nèi)容如下: 第1章介紹Java語言的起源和發(fā)展、Java開發(fā)環(huán)境的構(gòu)建、簡單Java程序的開發(fā)和運(yùn)行、程序設(shè)計(jì)風(fēng)格與文檔以及集成開發(fā)環(huán)境Eclipse的使用。 第2章介紹數(shù)據(jù)類型、常用運(yùn)算符、表達(dá)式以及數(shù)據(jù)類型的轉(zhuǎn)換等。 第3章介紹程序的流程控制結(jié)構(gòu),包括選擇結(jié)構(gòu)和循環(huán)結(jié)構(gòu)。重點(diǎn)介紹if結(jié)構(gòu)、switch結(jié)構(gòu)、while循環(huán)、do-while循環(huán)以及for循環(huán)結(jié)構(gòu)。 第4章首先介紹了面向?qū)ο缶幊痰幕靖拍,然后講解Java類的定義以及對象的創(chuàng)建,其中還包括方法的設(shè)計(jì)、static修飾符的使用、包的概念以及類的導(dǎo)入等。 第5和第6章介紹Java數(shù)組和字符串及其應(yīng)用,包括數(shù)組和多維數(shù)組、String類、StringBuilder類和StringBuffer類,另外還介紹了Arrays類的使用、格式化輸出等。 第7章介紹類的繼承與多態(tài),其中包括繼承性、封裝性、多態(tài)性以及對象轉(zhuǎn)換等。這是面向?qū)ο缶幊痰暮诵膬?nèi)容。 第8章介紹Java常用核心類,包括Object類、Math類、基本數(shù)據(jù)類型包裝類等,另外介紹了Java 8新增的日期-時(shí)間API相關(guān)的類。 第9章介紹內(nèi)部類、枚舉類型和注解類型,包括各種類型的內(nèi)部類、枚舉的定義與使用,標(biāo)準(zhǔn)注解的使用、自定義注解類型。 第10章介紹接口和Lambda表達(dá)式,包括接口的定義、接口繼承、接口實(shí)現(xiàn)以及在接口中定義靜態(tài)方法和默認(rèn)方法。此外,還介紹了Lambda表達(dá)式的使用。 第11章介紹Java集合框架,包括泛型編程基本概念、各種類型集合接口與類的使用、Collections類的常用方法,同時(shí)還介紹了Stream API的簡單用法。 第12章介紹Java異常處理,包括異常類型、異常處理機(jī)制、自定義異常、斷言的使用。 第13章介紹Java輸入輸出,包括二進(jìn)制流和文本流的使用、對象序列化以及Files類的常用操作。 第14和第15章介紹JavaFX圖形界面編程,包括界面布局面板、JavaFX各類形狀的使用、事件處理,還包括圖像和特效、多媒體和動(dòng)畫以及各種常用控件的使用。 第16章介紹JDBC數(shù)據(jù)庫編程基礎(chǔ),包括數(shù)據(jù)庫和MySQL基礎(chǔ),數(shù)據(jù)庫訪問步驟、常用的JDBC API以及DAO設(shè)計(jì)模式等。 第17章介紹Java并發(fā)編程基礎(chǔ),包括多線程編程、線程的狀態(tài)與調(diào)度、線程同步與協(xié)調(diào)、并發(fā)工具等。 第18章介紹Java網(wǎng)絡(luò)編程,包括基于TCP的Java套接字和基于UDP的編程、基于HTTP的URL編程等。 本書吸取了國內(nèi)外有關(guān)著作和資料的精華,強(qiáng)調(diào)面向問題求解的教學(xué)方法是本書特色,同時(shí)凝聚了作者多年的教學(xué)實(shí)踐經(jīng)驗(yàn)。 本書每章提供的二維碼可觀看相應(yīng)章節(jié)的視頻講解。掃描封底“課件下載”二維碼可獲得本書PPT教學(xué)課件、程序源代碼、教學(xué)大綱等課程資源。與本書配套的《Java語言程序設(shè)計(jì)(第3版)學(xué)習(xí)指導(dǎo)與習(xí)題解析》(清華大學(xué)出版社出版)中提供了學(xué)習(xí)指導(dǎo)、實(shí)訓(xùn)任務(wù)及編程練習(xí)的參考答案。 本書由沈澤剛主編,傘曉麗、彭霞、孫蕾、宋微、董研、張麗娟等教師參加了部分編寫和資料整理工作。本書出版得到了清華大學(xué)出版社魏江江主任的大力支持與合作。在此謹(jǐn)向以上各位表示衷心感謝。 本書在寫作中參考了大量文獻(xiàn),向這些文獻(xiàn)的作者表示衷心感謝。由于作者水平有限,書中難免存在不妥和錯(cuò)誤之處,懇請廣大讀者和同行批評指正。 第1章 Java語言概述... 1 1.1 Java起源與發(fā)展... 1 1.1.1 Java的起源... 1 1.1.2 Java的發(fā)展歷程... 2 1.1.3 Java語言的優(yōu)點(diǎn)... 3 1.2 Java平臺(tái)與開發(fā)環(huán)境... 3 1.2.1 Java平臺(tái)與應(yīng)用領(lǐng)域... 3 1.2.2 JDK、JRE和JVM.. 4 1.2.3 Java字節(jié)碼與平臺(tái)獨(dú)立... 4 1.2.4 JDK的下載與安裝... 5 1.2.5 Java API文檔... 6 1.3 Java程序基本結(jié)構(gòu)... 6 1.3.1 Java程序開發(fā)步驟... 6 1.3.2 第一個(gè)程序分析... 8 1.4 程序文檔風(fēng)格和注釋... 9 1.4.1 一致的縮進(jìn)和空白... 9 1.4.2 塊的風(fēng)格... 9 1.4.3 Java程序注釋... 10 1.5 Eclipse集成開發(fā)環(huán)境... 10 1.6 小結(jié)... 12 編程練習(xí)... 12 第2章 Java語言基礎(chǔ)... 13 2.1 簡單程序的開發(fā)... 13 2.1.1 從鍵盤讀取數(shù)據(jù)... 14 2.1.2 變量與賦值... 15 2.1.3 Java標(biāo)識符... 15 2.1.4 Java關(guān)鍵字... 16 2.2 數(shù)據(jù)類型... 16 2.2.1 數(shù)據(jù)類型概述... 16 2.2.2 字面值和常量... 17 2.2.3 整數(shù)類型... 17 2.2.4 浮點(diǎn)類型... 19 2.2.5 字符類型... 20 2.2.6 布爾類型... 21 2.2.7 字符串類型... 22 2.3 運(yùn)算符... 23 2.3.1 算術(shù)運(yùn)算符... 23 2.3.2 關(guān)系運(yùn)算符... 25 2.3.3 邏輯運(yùn)算符... 25 2.3.4 賦值運(yùn)算符... 26 2.3.5 位運(yùn)算符... 28 2.3.6 運(yùn)算符的優(yōu)先級和結(jié)合性... 30 2.4 數(shù)據(jù)類型轉(zhuǎn)換... 31 2.4.1 自動(dòng)類型轉(zhuǎn)換... 31 2.4.2 強(qiáng)制類型轉(zhuǎn)換... 32 2.4.3 表達(dá)式中類型自動(dòng)提升... 33 2.5 小結(jié)... 34 編程練習(xí)... 34 第3章 選擇與循環(huán)... 36 3.1 選擇... 36 3.1.1 單分支if語句... 36 3.1.2 雙分支if-else語句... 37 3.1.3 嵌套的if語句和多分支的if-else語句... 39 3.1.4 條件運(yùn)算符... 40 3.1.5 switch語句結(jié)構(gòu)... 41 3.2 循環(huán)... 43 3.2.1 while循環(huán)... 43 3.2.2 do-while循環(huán)... 45 3.2.3 for循環(huán)... 45 3.2.4 循環(huán)的嵌套... 47 3.2.5 break語句和continue語句... 47 3.3 示例學(xué)習(xí)... 49 3.3.1 任意抽取一張牌... 49 3.3.2 求最大公約數(shù)... 50 3.3.3 打印輸出若干素?cái)?shù)... 51 3.4 小結(jié)... 52 編程練習(xí)... 53 第4章 類和對象... 55 4.1 面向?qū)ο蟾攀?.. 55 4.1.1 OOP的產(chǎn)生... 55 4.1.2 面向?qū)ο蟮幕靖拍?.. 56 4.1.3 面向?qū)ο蠡咎卣?.. 57 4.1.4 OOP的優(yōu)勢... 58 4.2 為對象定義類... 58 4.2.1 類的定義... 59 4.2.2 對象的使用... 62 4.2.3 理解棧與堆... 64 4.2.4 用UML圖表示類... 64 4.3 方法設(shè)計(jì)... 65 4.3.1 如何設(shè)計(jì)方法... 65 4.3.2 方法的調(diào)用... 67 4.3.3 方法重載... 67 4.3.4 構(gòu)造方法... 68 4.3.5 this關(guān)鍵字的使用... 70 4.3.6 方法參數(shù)的傳遞... 71 4.4 靜態(tài)變量和靜態(tài)方法... 72 4.4.1 靜態(tài)變量... 72 4.4.2 靜態(tài)方法... 74 4.4.3 單例模式... 75 4.4.4 遞歸... 76 4.5 對象初始化和清除... 77 4.5.1 實(shí)例變量的初始化... 77 4.5.2 靜態(tài)變量的初始化... 79 4.5.3 垃圾回收器... 80 4.5.4 變量作用域和生存期... 81 4.6 包與類的導(dǎo)入... 82 4.6.1 包... 82 4.6.2 類的導(dǎo)入... 84 4.6.3 Java編譯單元... 85 4.7 小結(jié)... 85 編程練習(xí)... 86 第5章 數(shù)組... 90 5.1 創(chuàng)建和使用數(shù)組... 90 5.1.1 數(shù)組定義... 90 5.1.2 增強(qiáng)的for循環(huán)... 93 5.1.3 數(shù)組元素的復(fù)制... 93 5.1.4 數(shù)組參數(shù)與返回值... 95 5.1.5 可變參數(shù)的方法... 96 5.1.6 實(shí)例:隨機(jī)抽取4張牌... 97 5.1.7 實(shí)例:一個(gè)整數(shù)棧類... 98 5.2 Arrays類... 99 5.2.1 數(shù)組的排序... 100 5.2.2 元素的查找... 100 5.2.3 數(shù)組元素的復(fù)制... 101 5.2.4 填充數(shù)組元素... 101 5.2.5 數(shù)組的比較... 102 5.3 二維數(shù)組... 103 5.3.1 二維數(shù)組定義... 103 5.3.2 數(shù)組元素的使用... 104 5.3.3 數(shù)組初始化器... 105 5.3.4 實(shí)例:矩陣乘法... 105 5.3.5 不規(guī)則二維數(shù)組... 106 5.4 小結(jié)... 108 編程練習(xí)... 108 第6章 字符串... 111 6.1 String類... 111 6.1.1 創(chuàng)建String類對象... 111 6.1.2 字符串基本操作... 112 6.1.3 字符串查找... 114 6.1.4 字符串轉(zhuǎn)換為數(shù)組... 114 6.1.5 字符串比較... 115 6.1.6 字符串的拆分與組合... 117 6.1.7 String對象的不變性... 118 6.1.8 命令行參數(shù)... 118 6.2 格式化輸出... 119 6.3 StringBuilder類和StringBuffer類... 122 6.3.1 創(chuàng)建StringBuilder對象... 122 6.3.2 StringBuilder的訪問和修改... 122 6.3.3 運(yùn)算符“ ”的重載... 124 6.4 小結(jié)... 124 編程練習(xí)... 124 第7章 繼承與多態(tài)... 126 7.1 類的繼承... 126 7.1.1 類繼承的實(shí)現(xiàn)... 126 7.1.2 方法覆蓋... 129 7.1.3 super關(guān)鍵字... 130 7.1.4 調(diào)用父類的構(gòu)造方法... 132 7.2 封裝性與訪問修飾符... 133 7.2.1 類的訪問權(quán)限... 133 7.2.2 類成員的訪問權(quán)限... 134 7.3 防止類擴(kuò)展和方法覆蓋... 135 7.3.1 final修飾類... 135 7.3.2 final修飾方法... 136 7.3.3 final修飾變量... 136 7.4 抽象類... 137 7.5 對象轉(zhuǎn)換與多態(tài)... 138 7.5.1 對象轉(zhuǎn)換... 139 7.5.2 instanceof運(yùn)算符... 140 7.5.3 多態(tài)與動(dòng)態(tài)綁定... 140 7.6 小結(jié)... 142 編程練習(xí)... 142 第8章 Java常用核心類... 144 8.1 Object:終極父類... 144 8.1.1 toString()方法... 145 8.1.2 equals()方法... 145 8.1.3 hashCode()方法... 146 8.1.4 clone()方法... 147 8.1.5 finalize()方法... 148 8.2 Math類... 149 8.3 基本類型包裝類... 151 8.3.1 Character類... 151 8.3.2 Boolean類... 152 8.3.3 創(chuàng)建數(shù)值類對象... 153 8.3.4 數(shù)值類的常量... 154 8.3.5 自動(dòng)裝箱與自動(dòng)拆箱... 155 8.3.6 字符串轉(zhuǎn)換為基本類型... 156 8.3.7 BigInteger和BigDecimal類... 156 8.4 日期-時(shí)間API 158 8.4.1 本地日期類LocalDate. 158 8.4.2 本地時(shí)間類LocalTime. 160 8.4.3 本地日期時(shí)間類LocalDateTime. 161 8.4.4 Instant類、Duration類和Period類... 162 8.4.5 其他常用類... 164 8.4.6 日期時(shí)間解析和格式化... 164 8.5 小結(jié)... 166 編程練習(xí)... 166 第9章 內(nèi)部類、枚舉和注解... 168 9.1 內(nèi)部類... 168 9.1.1 成員內(nèi)部類... 169 9.1.2 局部內(nèi)部類... 170 9.1.3 匿名內(nèi)部類... 171 9.1.4 靜態(tài)內(nèi)部類... 173 9.2 枚舉類型... 175 9.2.1 枚舉類型的定義... 175 9.2.2 枚舉類型的方法... 175 9.2.3 枚舉在switch中的應(yīng)用... 176 9.2.4 枚舉類型的構(gòu)造方法... 177 9.3 注解類型... 178 9.3.1 注解概述... 179 9.3.2 標(biāo)準(zhǔn)注解... 179 9.3.3 定義注解類型... 181 9.3.4 標(biāo)準(zhǔn)元注解... 183 9.4 小結(jié)... 184 編程練習(xí)... 185 第10章 接口與Lambda表達(dá)式... 188 10.1 接口... 188 10.1.1 接口定義... 188 10.1.2 接口的實(shí)現(xiàn)... 189 10.1.3 接口的繼承... 190 10.1.4 接口類型的使用... 192 10.1.5 常量... 192 10.2 靜態(tài)方法和默認(rèn)方法... 192 10.2.1 靜態(tài)方法... 193 10.2.2 默認(rèn)方法... 193 10.2.3 解決默認(rèn)方法沖突... 193 10.3 接口示例... 195 10.3.1 Comparable接口... 195 10.3.2 Comparator接口... 197 10.4 Lambda表達(dá)式... 198 10.4.1 Lambda表達(dá)式簡介... 198 10.4.2 函數(shù)式接口... 199 10.4.3 Lambda表達(dá)式的語法... 199 10.4.4 預(yù)定義的函數(shù)式接口... 200 10.4.5 方法引用與構(gòu)造方法引用... 204 10.5 小結(jié)... 206 編程練習(xí)... 206
數(shù) 組 本章學(xué)習(xí)目標(biāo)* 描述數(shù)組的聲明、創(chuàng)建、元素的訪問;* 學(xué)會(huì)使用for循環(huán)和增強(qiáng)for循環(huán)訪問數(shù)組元素;* 學(xué)會(huì)將數(shù)組作為方法參數(shù)和返回值;* 了解可變參數(shù)方法的定義和使用;* 使用Arrays類中的方法操作數(shù)組;* 學(xué)會(huì)二維數(shù)組的聲明、創(chuàng)建、初始化和元素的訪問;* 了解不規(guī)則二維數(shù)組的使用。5.1 創(chuàng)建和使用數(shù)組 數(shù)組是幾乎所有程序設(shè)計(jì)語言都提供的一種數(shù)據(jù)存儲(chǔ)結(jié)構(gòu)。數(shù)組是名稱相同,下標(biāo)不同的一組變量,用來存儲(chǔ)一組類型相同的數(shù)據(jù)。下面就來介紹聲明、初始化和使用數(shù)組。5.1.1 數(shù)組定義 使用數(shù)組一般需要如下三個(gè)步驟: 。1)聲明數(shù)組:聲明數(shù)組名稱和元素的數(shù)據(jù)類型! 。2)創(chuàng)建數(shù)組:為數(shù)組元素分配存儲(chǔ)空間! 。3)數(shù)組的初始化:為數(shù)組元素賦值! 1. 聲明數(shù)組 使用數(shù)組之前需要聲明,聲明數(shù)組就是告訴編譯器數(shù)組名和數(shù)組元素類型。數(shù)組聲明可以使用下面兩種等價(jià)形式。 elementType []arrayName; elementType arrayName[]; 這里,elementType為數(shù)組元素類型,可以是基本數(shù)據(jù)類型(如boolean型或char類型),也可以是引用數(shù)據(jù)類型(如String或Employee類型等);arrayName為數(shù)組名,它是一個(gè)引用變量;方括號指明變量為數(shù)組變量,既可以放在變量前面也可以放在變量后面,推薦放在變量前面,這樣更直觀! ±纾旅媛暶髁藥讉(gè)數(shù)組: double []marks;String []words; ? 注意:數(shù)組聲明不能指定數(shù)組元素的個(gè)數(shù),這一點(diǎn)與C/C 不同! ∩厦媛暶鞯臄(shù)組,它們的元素類型分別為double型和String型。在Java語言中,數(shù)組是引用數(shù)據(jù)類型,也就是說數(shù)組是一個(gè)對象,數(shù)組名就是對象名(或引用名)。數(shù)組聲明實(shí)際上是聲明一個(gè)引用變量。如果數(shù)組元素為引用類型,則該數(shù)組稱為對象數(shù)組,如上面的words就是對象數(shù)組。所有數(shù)組都繼承了Object類,因此,可以調(diào)用Object類的所有方法。 * 提示:Java語言的數(shù)組是一種引用數(shù)據(jù)類型,即數(shù)組是對象。數(shù)組繼承Object類的所有方法! 2. 創(chuàng)建數(shù)組 數(shù)組聲明僅僅聲明一個(gè)數(shù)組對象引用,而創(chuàng)建數(shù)組是為數(shù)組的每個(gè)元素分配存儲(chǔ)空間。創(chuàng)建數(shù)組使用new語句,一般格式為: arrayName = new elementType[arraySize]; 該語句功能是分配arraySize個(gè)elementType類型的存儲(chǔ)空間,并通過arrayName來引用。例如: marks = new double[5]; //數(shù)組包含5個(gè)double型元素words = new String[3]; //數(shù)組包含3個(gè)String型元素 ? 注意:Java數(shù)組的大小可以在運(yùn)行時(shí)指定,這一點(diǎn)C/C 不允許! (shù)組的聲明與創(chuàng)建可以寫在一個(gè)語句中。例如: double []marks = new double[5];String []words = new String[3]; 當(dāng)用new運(yùn)算符創(chuàng)建一個(gè)數(shù)組時(shí),系統(tǒng)就為數(shù)組元素分配了存儲(chǔ)空間,這時(shí)系統(tǒng)根據(jù)指定的長度創(chuàng)建若干存儲(chǔ)空間并為數(shù)組每個(gè)元素指定默認(rèn)值。對數(shù)值型數(shù)組元素默認(rèn)值是0;字符型元素的默認(rèn)值是'\u0000';布爾型元素的默認(rèn)值是false;如果數(shù)組元素是引用類型,其默認(rèn)值是null! ∏懊鎯蓚(gè)語句分別分配了5個(gè)double型和3個(gè)String類型的空間,并且每個(gè)元素使用默認(rèn)值初始化。兩個(gè)語句執(zhí)行后效果如圖5-1所示。數(shù)組marks的每個(gè)元素都被初始化為0.0,而數(shù)組words的每個(gè)元素被初始化為null。
圖5-1 marks數(shù)組和words數(shù)組示意 對于引用類型數(shù)組(對象數(shù)組)還要為每個(gè)數(shù)組元素分配引用空間。例如: words[0] = new String("Java");words[1] = new String(" is");words[2] = new String(" cool"); 上面語句執(zhí)行后效果如圖5-2所示。 圖5-2 words數(shù)組元素創(chuàng)建后的效果
你還可能感興趣
我要評論
|