關于我們
書單推薦
新書推薦
|
Java語言程序設計(第3版)
本書以最新的Java SE 8為基礎,全面講解Java編程語言、Java面向對象技術和Java核心類庫。全書共18章,主要內(nèi)容包括Java語言基礎(數(shù)據(jù)類型、運算符與表達式、程序流程控制)、類與對象基礎、數(shù)組與字符串、Java面向對象特征(類的繼承與多態(tài)、內(nèi)部類與注解類型、接口與Lambda表達式)、常用核心類、泛型與集合框架、異常處理、輸入輸出、JavaFX圖形界面及事件處理、常用控件、JDBC數(shù)據(jù)庫編程、并發(fā)編程基礎、網(wǎng)絡編程等。
本書知識點全面,體系結構清晰,重點突出,文字準確,內(nèi)容組織循序漸進,并有大量精選示例。每章配有精心設計的編程練習題,幫助讀者理解掌握編程技術。本書提供教學課件、程序源代碼以及部分教學視頻與習題解答等資源。 本書可作為高等院校計算機專業(yè)或相關專業(yè)的“Java程序設計”或“面向對象程序設計”課程的教材,也可作為Java認證考試及編程愛好者的參考資料。
本書知識點全面,體系結構清晰,重點突出、文字準確,內(nèi)容組織循序漸進,并有大量精選的示例和配套素材,使讀者學習起來容易理解和掌握。在內(nèi)容上緊跟Java語言的*發(fā)展,介紹了Java SE 8的大部分新特征。30小時視頻講解
前言 Java是一門卓越的程序設計語言,同時,它也是基于Java語言、從移動應用開發(fā)到企業(yè)級開發(fā)的平臺。隨著Web的發(fā)展,應用Web成為大型應用開發(fā)的主流方式,Java憑借其“編寫一次,到處運行”的特性很好地支持了互聯(lián)網(wǎng)應用所要求的跨平臺能力,成為服務器端開發(fā)的主流語言。現(xiàn)在人類已進入移動互聯(lián)網(wǎng)時代,而Java依然是當之無愧的主角。 Java是一門經(jīng)典的面向對象語言,同時也是一門優(yōu)秀的教學語言。Java擁有優(yōu)雅和簡明的語法以及豐富的類庫,讓編程人員盡可能地將精力集中在業(yè)務領域的問題求解上。 本版在第2版的基礎上增加了Java SE 8的新特性,如接口的默認方法和靜態(tài)方法、Lambda表達式、新的日期/時間API、Stream API,圖形用戶界面用JavaFX替換了Swing,另外增加了Java網(wǎng)絡編程一章,其他章節(jié)也做了部分修訂。 本書作為面向初學者的教程,編寫和取材著重體現(xiàn)Java面向對象編程思想和面向問題求解的理念。本書采用基礎優(yōu)先的方式,從編程基礎開始,逐步引入面向對象思想。 本書包含三大主題,這是一名專業(yè)Java程序員必須熟練掌握的內(nèi)容。
全書共18章,主要內(nèi)容如下: 第1章介紹Java語言的起源和發(fā)展、Java開發(fā)環(huán)境的構建、簡單Java程序的開發(fā)和運行、程序設計風格與文檔以及集成開發(fā)環(huán)境Eclipse的使用。 第2章介紹數(shù)據(jù)類型、常用運算符、表達式以及數(shù)據(jù)類型的轉換等。 第3章介紹程序的流程控制結構,包括選擇結構和循環(huán)結構。重點介紹if結構、switch結構、while循環(huán)、do-while循環(huán)以及for循環(huán)結構。 第4章首先介紹了面向對象編程的基本概念,然后講解Java類的定義以及對象的創(chuàng)建,其中還包括方法的設計、static修飾符的使用、包的概念以及類的導入等。 第5和第6章介紹Java數(shù)組和字符串及其應用,包括數(shù)組和多維數(shù)組、String類、StringBuilder類和StringBuffer類,另外還介紹了Arrays類的使用、格式化輸出等。 第7章介紹類的繼承與多態(tài),其中包括繼承性、封裝性、多態(tài)性以及對象轉換等。這是面向對象編程的核心內(nèi)容。 第8章介紹Java常用核心類,包括Object類、Math類、基本數(shù)據(jù)類型包裝類等,另外介紹了Java 8新增的日期-時間API相關的類。 第9章介紹內(nèi)部類、枚舉類型和注解類型,包括各種類型的內(nèi)部類、枚舉的定義與使用,標準注解的使用、自定義注解類型。 第10章介紹接口和Lambda表達式,包括接口的定義、接口繼承、接口實現(xiàn)以及在接口中定義靜態(tài)方法和默認方法。此外,還介紹了Lambda表達式的使用。 第11章介紹Java集合框架,包括泛型編程基本概念、各種類型集合接口與類的使用、Collections類的常用方法,同時還介紹了Stream API的簡單用法。 第12章介紹Java異常處理,包括異常類型、異常處理機制、自定義異常、斷言的使用。 第13章介紹Java輸入輸出,包括二進制流和文本流的使用、對象序列化以及Files類的常用操作。 第14和第15章介紹JavaFX圖形界面編程,包括界面布局面板、JavaFX各類形狀的使用、事件處理,還包括圖像和特效、多媒體和動畫以及各種常用控件的使用。 第16章介紹JDBC數(shù)據(jù)庫編程基礎,包括數(shù)據(jù)庫和MySQL基礎,數(shù)據(jù)庫訪問步驟、常用的JDBC API以及DAO設計模式等。 第17章介紹Java并發(fā)編程基礎,包括多線程編程、線程的狀態(tài)與調(diào)度、線程同步與協(xié)調(diào)、并發(fā)工具等。 第18章介紹Java網(wǎng)絡編程,包括基于TCP的Java套接字和基于UDP的編程、基于HTTP的URL編程等。 本書吸取了國內(nèi)外有關著作和資料的精華,強調(diào)面向問題求解的教學方法是本書特色,同時凝聚了作者多年的教學實踐經(jīng)驗。 本書每章提供的二維碼可觀看相應章節(jié)的視頻講解。掃描封底“課件下載”二維碼可獲得本書PPT教學課件、程序源代碼、教學大綱等課程資源。與本書配套的《Java語言程序設計(第3版)學習指導與習題解析》(清華大學出版社出版)中提供了學習指導、實訓任務及編程練習的參考答案。 本書由沈澤剛主編,傘曉麗、彭霞、孫蕾、宋微、董研、張麗娟等教師參加了部分編寫和資料整理工作。本書出版得到了清華大學出版社魏江江主任的大力支持與合作。在此謹向以上各位表示衷心感謝。 本書在寫作中參考了大量文獻,向這些文獻的作者表示衷心感謝。由于作者水平有限,書中難免存在不妥和錯誤之處,懇請廣大讀者和同行批評指正。 第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)點... 3 1.2 Java平臺與開發(fā)環(huán)境... 3 1.2.1 Java平臺與應用領域... 3 1.2.2 JDK、JRE和JVM.. 4 1.2.3 Java字節(jié)碼與平臺獨立... 4 1.2.4 JDK的下載與安裝... 5 1.2.5 Java API文檔... 6 1.3 Java程序基本結構... 6 1.3.1 Java程序開發(fā)步驟... 6 1.3.2 第一個程序分析... 8 1.4 程序文檔風格和注釋... 9 1.4.1 一致的縮進和空白... 9 1.4.2 塊的風格... 9 1.4.3 Java程序注釋... 10 1.5 Eclipse集成開發(fā)環(huán)境... 10 1.6 小結... 12 編程練習... 12 第2章 Java語言基礎... 13 2.1 簡單程序的開發(fā)... 13 2.1.1 從鍵盤讀取數(shù)據(jù)... 14 2.1.2 變量與賦值... 15 2.1.3 Java標識符... 15 2.1.4 Java關鍵字... 16 2.2 數(shù)據(jù)類型... 16 2.2.1 數(shù)據(jù)類型概述... 16 2.2.2 字面值和常量... 17 2.2.3 整數(shù)類型... 17 2.2.4 浮點類型... 19 2.2.5 字符類型... 20 2.2.6 布爾類型... 21 2.2.7 字符串類型... 22 2.3 運算符... 23 2.3.1 算術運算符... 23 2.3.2 關系運算符... 25 2.3.3 邏輯運算符... 25 2.3.4 賦值運算符... 26 2.3.5 位運算符... 28 2.3.6 運算符的優(yōu)先級和結合性... 30 2.4 數(shù)據(jù)類型轉換... 31 2.4.1 自動類型轉換... 31 2.4.2 強制類型轉換... 32 2.4.3 表達式中類型自動提升... 33 2.5 小結... 34 編程練習... 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 條件運算符... 40 3.1.5 switch語句結構... 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 示例學習... 49 3.3.1 任意抽取一張牌... 49 3.3.2 求最大公約數(shù)... 50 3.3.3 打印輸出若干素數(shù)... 51 3.4 小結... 52 編程練習... 53 第4章 類和對象... 55 4.1 面向對象概述... 55 4.1.1 OOP的產(chǎn)生... 55 4.1.2 面向對象的基本概念... 56 4.1.3 面向對象基本特征... 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 方法設計... 65 4.3.1 如何設計方法... 65 4.3.2 方法的調(diào)用... 67 4.3.3 方法重載... 67 4.3.4 構造方法... 68 4.3.5 this關鍵字的使用... 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 實例變量的初始化... 77 4.5.2 靜態(tài)變量的初始化... 79 4.5.3 垃圾回收器... 80 4.5.4 變量作用域和生存期... 81 4.6 包與類的導入... 82 4.6.1 包... 82 4.6.2 類的導入... 84 4.6.3 Java編譯單元... 85 4.7 小結... 85 編程練習... 86 第5章 數(shù)組... 90 5.1 創(chuàng)建和使用數(shù)組... 90 5.1.1 數(shù)組定義... 90 5.1.2 增強的for循環(huán)... 93 5.1.3 數(shù)組元素的復制... 93 5.1.4 數(shù)組參數(shù)與返回值... 95 5.1.5 可變參數(shù)的方法... 96 5.1.6 實例:隨機抽取4張牌... 97 5.1.7 實例:一個整數(shù)棧類... 98 5.2 Arrays類... 99 5.2.1 數(shù)組的排序... 100 5.2.2 元素的查找... 100 5.2.3 數(shù)組元素的復制... 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 實例:矩陣乘法... 105 5.3.5 不規(guī)則二維數(shù)組... 106 5.4 小結... 108 編程練習... 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 字符串轉換為數(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 運算符“ ”的重載... 124 6.4 小結... 124 編程練習... 124 第7章 繼承與多態(tài)... 126 7.1 類的繼承... 126 7.1.1 類繼承的實現(xiàn)... 126 7.1.2 方法覆蓋... 129 7.1.3 super關鍵字... 130 7.1.4 調(diào)用父類的構造方法... 132 7.2 封裝性與訪問修飾符... 133 7.2.1 類的訪問權限... 133 7.2.2 類成員的訪問權限... 134 7.3 防止類擴展和方法覆蓋... 135 7.3.1 final修飾類... 135 7.3.2 final修飾方法... 136 7.3.3 final修飾變量... 136 7.4 抽象類... 137 7.5 對象轉換與多態(tài)... 138 7.5.1 對象轉換... 139 7.5.2 instanceof運算符... 140 7.5.3 多態(tài)與動態(tài)綁定... 140 7.6 小結... 142 編程練習... 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 自動裝箱與自動拆箱... 155 8.3.6 字符串轉換為基本類型... 156 8.3.7 BigInteger和BigDecimal類... 156 8.4 日期-時間API 158 8.4.1 本地日期類LocalDate. 158 8.4.2 本地時間類LocalTime. 160 8.4.3 本地日期時間類LocalDateTime. 161 8.4.4 Instant類、Duration類和Period類... 162 8.4.5 其他常用類... 164 8.4.6 日期時間解析和格式化... 164 8.5 小結... 166 編程練習... 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中的應用... 176 9.2.4 枚舉類型的構造方法... 177 9.3 注解類型... 178 9.3.1 注解概述... 179 9.3.2 標準注解... 179 9.3.3 定義注解類型... 181 9.3.4 標準元注解... 183 9.4 小結... 184 編程練習... 185 第10章 接口與Lambda表達式... 188 10.1 接口... 188 10.1.1 接口定義... 188 10.1.2 接口的實現(xiàn)... 189 10.1.3 接口的繼承... 190 10.1.4 接口類型的使用... 192 10.1.5 常量... 192 10.2 靜態(tài)方法和默認方法... 192 10.2.1 靜態(tài)方法... 193 10.2.2 默認方法... 193 10.2.3 解決默認方法沖突... 193 10.3 接口示例... 195 10.3.1 Comparable接口... 195 10.3.2 Comparator接口... 197 10.4 Lambda表達式... 198 10.4.1 Lambda表達式簡介... 198 10.4.2 函數(shù)式接口... 199 10.4.3 Lambda表達式的語法... 199 10.4.4 預定義的函數(shù)式接口... 200 10.4.5 方法引用與構造方法引用... 204 10.5 小結... 206 編程練習... 206
數(shù) 組 本章學習目標* 描述數(shù)組的聲明、創(chuàng)建、元素的訪問;* 學會使用for循環(huán)和增強for循環(huán)訪問數(shù)組元素;* 學會將數(shù)組作為方法參數(shù)和返回值;* 了解可變參數(shù)方法的定義和使用;* 使用Arrays類中的方法操作數(shù)組;* 學會二維數(shù)組的聲明、創(chuàng)建、初始化和元素的訪問;* 了解不規(guī)則二維數(shù)組的使用。5.1 創(chuàng)建和使用數(shù)組 數(shù)組是幾乎所有程序設計語言都提供的一種數(shù)據(jù)存儲結構。數(shù)組是名稱相同,下標不同的一組變量,用來存儲一組類型相同的數(shù)據(jù)。下面就來介紹聲明、初始化和使用數(shù)組。5.1.1 數(shù)組定義 使用數(shù)組一般需要如下三個步驟: 。1)聲明數(shù)組:聲明數(shù)組名稱和元素的數(shù)據(jù)類型! 。2)創(chuàng)建數(shù)組:為數(shù)組元素分配存儲空間! 。3)數(shù)組的初始化:為數(shù)組元素賦值! 1. 聲明數(shù)組 使用數(shù)組之前需要聲明,聲明數(shù)組就是告訴編譯器數(shù)組名和數(shù)組元素類型。數(shù)組聲明可以使用下面兩種等價形式。 elementType []arrayName; elementType arrayName[]; 這里,elementType為數(shù)組元素類型,可以是基本數(shù)據(jù)類型(如boolean型或char類型),也可以是引用數(shù)據(jù)類型(如String或Employee類型等);arrayName為數(shù)組名,它是一個引用變量;方括號指明變量為數(shù)組變量,既可以放在變量前面也可以放在變量后面,推薦放在變量前面,這樣更直觀! ±,下面聲明了幾個數(shù)組: double []marks;String []words; ? 注意:數(shù)組聲明不能指定數(shù)組元素的個數(shù),這一點與C/C 不同! ∩厦媛暶鞯臄(shù)組,它們的元素類型分別為double型和String型。在Java語言中,數(shù)組是引用數(shù)據(jù)類型,也就是說數(shù)組是一個對象,數(shù)組名就是對象名(或引用名)。數(shù)組聲明實際上是聲明一個引用變量。如果數(shù)組元素為引用類型,則該數(shù)組稱為對象數(shù)組,如上面的words就是對象數(shù)組。所有數(shù)組都繼承了Object類,因此,可以調(diào)用Object類的所有方法! * 提示:Java語言的數(shù)組是一種引用數(shù)據(jù)類型,即數(shù)組是對象。數(shù)組繼承Object類的所有方法! 2. 創(chuàng)建數(shù)組 數(shù)組聲明僅僅聲明一個數(shù)組對象引用,而創(chuàng)建數(shù)組是為數(shù)組的每個元素分配存儲空間。創(chuàng)建數(shù)組使用new語句,一般格式為: arrayName = new elementType[arraySize]; 該語句功能是分配arraySize個elementType類型的存儲空間,并通過arrayName來引用。例如: marks = new double[5]; //數(shù)組包含5個double型元素words = new String[3]; //數(shù)組包含3個String型元素 ? 注意:Java數(shù)組的大小可以在運行時指定,這一點C/C 不允許! (shù)組的聲明與創(chuàng)建可以寫在一個語句中。例如: double []marks = new double[5];String []words = new String[3]; 當用new運算符創(chuàng)建一個數(shù)組時,系統(tǒng)就為數(shù)組元素分配了存儲空間,這時系統(tǒng)根據(jù)指定的長度創(chuàng)建若干存儲空間并為數(shù)組每個元素指定默認值。對數(shù)值型數(shù)組元素默認值是0;字符型元素的默認值是'\u0000';布爾型元素的默認值是false;如果數(shù)組元素是引用類型,其默認值是null! ∏懊鎯蓚語句分別分配了5個double型和3個String類型的空間,并且每個元素使用默認值初始化。兩個語句執(zhí)行后效果如圖5-1所示。數(shù)組marks的每個元素都被初始化為0.0,而數(shù)組words的每個元素被初始化為null。
圖5-1 marks數(shù)組和words數(shù)組示意 對于引用類型數(shù)組(對象數(shù)組)還要為每個數(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)建后的效果
你還可能感興趣
我要評論
|