Java高手是怎樣煉成的:原理、方法與實踐 ( 簡體 字) |
作者:高永強 盧晨 | 類別:1. -> 程式設計 -> JAVA -> Java |
譯者: |
出版社:清華大學出版社 | 3dWoo書號: 53884 詢問書籍請說出此書號!【缺書】 NT售價: 590 元 |
出版日:1/1/2021 |
頁數:607 |
光碟數:0 |
|
站長推薦: |
印刷:黑白印刷 | 語系: ( 簡體 版 ) |
|
加入購物車 │加到我的最愛 (請先登入會員) |
ISBN:9787302563846 |
作者序 | 譯者序 | 前言 | 內容簡介 | 目錄 | 序 |
(簡體書上所述之下載連結耗時費功, 恕不適用在台灣, 若讀者需要請自行嘗試, 恕不保證) |
作者序: |
譯者序: |
前言: Java是世界上第一個100%不依賴操作系統平臺、面向對象的編程語言。在從發布、發展到成熟、壯大的20多年里,Java如同一顆冉冉升起的耀眼明星,迅速超越C和C++,獨占鰲頭,成為軟件開發最廣泛應用的編程語言之一。恭賀你選擇了Java,感謝你翻開這本書,它可以作為啟迪你Java編程概念的向導、打開通往Java技術寶庫的“金鑰匙”。這無疑會使你與Java結下不解之緣,成為掌握和擁有Java技術大家庭中的一員。 Java語言包括廣泛的應用技術和應用領域。從應用技術或軟件包來說,它包括Java標準版本軟件包Java SE、Java企業版本軟件包Java EE,以及Java微型版本Java ME。從軟件開發及應用領域來說,它包括桌面應用編程、Web客戶端編程、服務器編程、移動設備(如手機)編程以及機器人編程等。雖然本書專門介紹Java標準版本的編程概念和技術,但它是學習其他Java技術的基礎。學好了本書中介紹和討論的Java編程概念和技術,掌握其他Java技術就不難了。 那么怎樣寫好這本書,使讀者在合上這本書的時候愛不釋手,有繼續學下去的欲望;當讀者學完這本書的時候,會由衷地說,這本書沒有白買,它物超所值,是值得擁有的一本好書呢? 為此,我嚴格遵循下面的寫作思想: 第一,作者必須是讀者。這是我多年從事寫作的經驗之談。我在寫本書的時候,總是在不斷地設身處地問自己:在介紹Java編程的眾多書中,讀者為什么要買你寫的書?如果我是讀者,會買它嗎?回想起我在初學Java的時候,每遇到一個難懂的Java概念編程技術,總是會問:什么是問題所在(What)?為什么會這樣(Why)?怎樣解決它(How)?我在這本書的寫作大綱、章節安排以及內容編排上是按照這樣一個3W作為主線,使它成為讀者學習Java編程的良師益友。 第二,作者不僅僅是讀者。作者必須把握讀者的心理,知道讀者在學習過程中的難點。我們經常說難者不會,會者不難。我常常問自己:為什么學會了就不難了呢?究根尋源,本來問題就不難,是沒有講清楚、沒有寫清楚,把概念和技術越說越玄、越寫越深奧,如同不會畫畫,越描越黑。所以我寫作的原則是:自己沒有搞懂的概念和技術,絕不寫,否則一定會誤人子弟。懂了就覺得簡單了,才會把難的東西寫得簡單易懂,讀者才會受益。 第三,沒有實際應用和教學經驗的概念和技術,絕不把它寫進書里。我是從1996年,即Java正式發布的時候,開始自學Java,并且從事Java教學的。我所在的大學地處美國硅谷,是Java和許多計算機軟硬件技術的誕生地。創建Java語言的Sun Microsystems以及收購了它的甲骨文公司(Oracle)就離我的居所十幾分鐘的車程。我幾乎每年都參加JavaOne國際會議,聆聽Java領軍人物的演講,參加介紹Java新技術的講座和培訓以及參觀所有Java伙伴公司的展廳,收集有關Java軟件開發的資料,充實自己的知識。這些經驗無疑有益地幫助我完成本書的寫作。 第四,以實例和實戰項目為主導解釋編程概念和難點,我認為這是學習任何編程語言的特點。我在《全C編程》《微型計算機應用用戶指南》等書以及我的教學實踐中始終把握這個特點,讀者和學生受益匪淺,反映甚佳。市面上流行的一些編程書中也會列舉大量的例子,但許多只是程序代碼片段,或者是讀者不能編譯執行的程序。我認為這不是真正意義上的通過實例來學習編程。在我的書中500多個實例都是完整的程序,都可以編譯和執行。這樣不僅可以壓縮書的厚度、降低圖書價格,還有其他兩個好處:讀者在學習書中的舉例時,可以抓住重點;在深化理解和掌握消化時,可以看到程序的全貌和各個部分的關系。 第五,學習編程關鍵在于動手。心動不如行動,光看書是學不會Java的。“要想知道梨子的滋味,必須親口嘗嘗。”編程是實踐性很強的藝術,我在20多年的教學中,看到許多學生上課認真聽講、專心記筆記;下課用心看書,逐字逐段摳書本,但卻忽視了實踐環節,缺乏動手能力,為什么?因為做練習太少,上機編寫程序太少,分析并修改程序例子太少。針對這個特點,我在教學中注重強調練習、實踐、分析、修改、提高、鞏固這幾個環節。許多編程書籍往往沒有練習題部分。我覺得這是十分遺憾或美中不足的事。練習題不僅要有,而且應該涵蓋章節中討論過的所有重要編程概念和技術,引導、鼓勵、督促讀者勇于實踐并且善于實踐。 本書就是在以上原則和宗旨的指導下,積累我20多年Java教學和實踐經驗以及20多年程序設計教學生涯的基礎上寫成的。 本書分為五部分,共23章。 第一部分 新手上路,共5章:第1章介紹Java的基礎知識,第2章介紹Java編程相關的內容,第3章討論新手須知的類和對象,第4章闡述控制語句相關知識,第5章介紹數據控制和質量保證的基礎內容,引導初學者為學習Java編程打好基礎。 第二部分 告別菜鳥,共4章:第6章詳細介紹類和對象,第7章討論了繼承,第8章介紹多態的用法,第9章闡述接口相關內容,主要討論面向對象編程的本質概念和技術。 第三部分 Java提高,共6章:第10章細談數組,第11章深入介紹字符串,第12章揭秘異常處理,第13章介紹高手掌握的更多OOP技術,第14章介紹高手須知的集合類,第15章闡述多線程相關內容,深入介紹Java的其他重要編程概念和技術。 第四部分 GUI和多媒體編程,共5章:第16章介紹GUI相關內容,第17章介紹GUI組件布局——安排組件位置和顯示風格,第18章說明更多組件和事件處理,第19章揭秘事件處理那些事兒,第20章介紹多媒體編程,引導讀者走進Java,包括圖形、圖像、字體、顏色以及音頻播放等多媒體編程世界。 第五部分 高手進階——數據流處理和編程,共3章:第21章介紹文件I/O,第22章說明數據庫編程,第23章闡述網絡編程,使讀者成為Java編程和實戰項目開發技術的高手。 我們誠心將這本書獻給熱衷于Java編程的讀者。讓我們在Java的廣袤天地間,為了解Java真相、掌握Java技術,勇于探索和實踐。 |
內容簡介:《Java高手是怎樣煉成的:原理、方法與實踐》是作者20多年工作經驗的結晶。內容由淺入深,循序漸進,通過500多個簡單易懂、可運行的完整實例,幫助讀者理解Java編程的邏輯、概念及實操。本書內容豐富,講解接地氣,從理論到實踐,從基礎到高級,幫助讀者建立學習信心,在實踐中學會Java編程。 《Java高手是怎樣煉成的:原理、方法與實踐》分五部分,共23章。第一部分(第1∼5章)主要介紹Java基本語法,包括Java語言概述和發展、編程和開發環境及設置等。第二部分(第6∼9章)通過生動實例介紹類、對象、繼承、多態、內部類以及接口等Java編程概念和技術。第三部分(第10∼15章)走進數組和字符串,深入講解它們的應用、異常處理,并深入討論更多面向對象技術。第四部分(第16∼20章)介紹20多種GUI組件、字體、顏色、圖像以及音頻編程。第五部分(第21∼23章)詳細講解數據流、文件I/O、數據庫編程以及網絡編程等。 《Java高手是怎樣煉成的:原理、方法與實踐》專為不同層次的Java程序員精心編寫,既適合編程初學者入門,又適合程序員進階,還可以作為高等院校講授面向對象程序設計語言以及Java語言的參考教材。 |
目錄:第一部分新手上路 第1章初識Java·································2 1.1什么是Java················································2 1.2Java能做什么············································3 1.3Java軟件包················································3 1.3.1什么是JavaSE···································3 1.3.2什么是JDK·········································4 1.4為什么Java可以在任何計算機上運行····4 1.5Java和其他語言比較································4 1.5.1Java和C++的比較····························5 1.5.2Java和C#的比較······························5 1.6為什么學Java············································5 1.6.1新手常遇到的困難·····························5 1.6.2為什么選擇這本書·····························6 1.7免費下載、安裝和測試學習Java需要的軟件············6 1.7.1免費下載JDK軟件包························7 1.7.2JDK的安裝步驟·································7 1.7.3安裝成功我知道·································8 1.8新手使用Java開發工具Eclipse············10 1.8.1什么是IDE········································10 1.8.2為什么用Eclipse······························10 1.8.3免費下載、安裝和測試Eclipse······11 1.8.4新手須知Eclipse常用功能·············14 1.9編寫和運行第一個Java程序·················17 1.10什么是JavaAPI······································19 鞏固提高練習和編程實踐·······························19 第2章開始Java編程························20 2.1一切從基礎開始······································20 2.1.1Java語句···········································20 2.1.2注釋,還是注釋·······························21 2.1.3什么是標識符和怎樣使用···············22 2.2Java基本數據··········································23 2.2.18種基本數據類型····························23 2.2.2如何定義變量···································24 2.2.3什么是變量初始化···························25 2.2.4變量與存儲器有什么關系···············26 2.2.5常量必須初始化·······························27 2.3賦值語句··················································27 2.3.1算術表達式·······································27 2.3.2快捷賦值操作符·······························29 2.4初識字符串··············································30 2.4.1菜鳥理解字符串·······························30 2.4.2什么是字符串引用···························31 2.4.3如何實現字符串連接·······················31 2.4.4如何處理特殊字符——轉義符·······33 2.5初識數組··················································34 2.5.1菜鳥理解數組···································34 2.5.2一個例子教會你使用數組···············34 鞏固提高練習和編程實踐·······························35 第3章新手須知類和對象····················37 3.1初識類和對象··········································37 3.1.1類到底是什么···································37 3.1.2對象又是什么···································38 3.1.3編寫你的第一個類···························38 3.1.4創建你的第一個對象·······················40 3.1.5怎樣調用方法···································41 3.1.6怎樣測試自己編寫的類···················41 3.1.7站在巨人的肩膀——使用API類············43 3.1.8給程序帶來五彩繽紛——細說JOptionPane·········45 3.2學習更多輸入、輸出API類·················48 3.2.1回到黑白——System.out·················49 3.2.2掃描輸入——Scanner······················50 3.3編寫用戶友好與人機互動程序··············52 實戰項目:里程轉換應用開發·······················53 鞏固提高練習和實戰項目大練兵···················55 第4章走進控制語句··························57 4.1條件表達式··············································57 4.1.1關系表達式·······································57 4.1.2比較基本型數據·······························58 4.1.3比較字符串·······································59 4.2邏輯表達式和應用··································61 4.2.1邏輯表···············································61 4.2.2復合表達式及運算次序···················61 4.2.3你的程序邏輯清楚嗎·······················62 4.3簡單if語句·············································63 4.4簡單if-else語句······································65 4.5嵌套if-else語句······································67 4.5.1用多種格式編寫·······························67 4.5.2應用實例···········································68 4.6條件運算符?:··········································69 4.7多項選擇——switch語句······················69 4.7.1典型switch語句格式·······················69 4.7.2應用實例···········································71 4.7.3JDK14新增的switch-case語句及其應用········72 4.8你的程序需要繼續運行嗎——循環語句················72 4.8.1走進while循環································72 4.8.2走進do-while循環···························75 4.8.3走進for循環·····································77 4.8.4走進嵌套循環···································79 4.9更多控制語句··········································81 4.9.1break語句·········································81 4.9.2continue語句····································82 實戰項目:投資回報應用開發(1)···············83 鞏固提高練習和實戰項目大練兵···················86 第5章數據控制和質量保證初探···········89 5.1垃圾進、垃圾出——誓將錯誤消滅在開始··········89 5.2Java的異常處理······································90 5.2.1系統自動拋出的異常·······················90 5.2.2初識try-catch····································90 5.2.3API標準異常類································92 5.2.4怎樣處理系統自動拋出的異常·······92 5.2.5為什么需要拋出和處理異常···········93 5.2.6異常處理應用實例···························95 5.3格式化輸出控制······································98 5.3.1貨幣輸出格式化·······························98 5.3.2國際貨幣輸出格式化·······················99 5.3.3百分比輸出格式化·························100 5.3.4其他數值輸出格式化·····················101 5.3.5利用DecimalFormat控制數值輸出格式化·······102 5.4數據類型轉換········································102 5.4.1自動類型轉換·································103 5.4.2強制性類型轉換cast······················103 5.5怎樣利用Math類·································104 5.6處理超值數字——BigDecimal類·······105 5.6.1BigDecimal的數學運算·················106 5.6.2BigDecimal的格式化輸出·············107 實戰項目:投資回報應用開發(2)·············108 鞏固提高練習和實戰項目大練兵·················110 第二部分告別菜鳥 第6章走進類和對象·························114 6.1面向對象編程——原來如此················114 6.1.1類和對象剖析——源于生活,高于生活·········115 6.1.2封裝性·············································115 6.1.3繼承性·············································116 6.1.4多態性·············································117 6.1.5抽象性·············································117 6.2類為什么是編程模塊····························117 6.2.1類就是軟件工廠產品藍圖·············117 6.2.2如何描述對象——確定其屬性并賦值···········118 6.2.3構造方法制造對象·························119 6.2.4更靈活地制造對象——構造方法重載··············121 6.3走進方法················································122 6.3.1方法就是對象的具體操作·············122 6.3.2什么是傳遞值的參數和傳遞引用的參數············123 6.3.3方法重載·········································125 6.3.4this是什么意思······························126 6.4走進靜態數據········································129 6.4.1屬于全體對象的數據就是靜態數據··················129 6.4.2靜態數據是怎樣工作的·················130 6.4.3應用靜態數據原則·························130 6.5走進靜態方法········································131 6.5.1有靜態數據就有靜態方法——此話有理···········131 6.5.2靜態方法怎樣工作——不同于一般方法················132 6.5.3為什么要用靜態初始化程序塊·····133 6.6我們喜歡再談對象································134 6.6.1對象創建與對象引用·····················134 6.6.2為什么對象名重用·························135 6.6.3方法鏈式調用就這么簡單·············136 實戰項目:投資回報應用開發(3)·············136 鞏固提高練習和實戰項目大練兵·················138 第7章繼承·····································140 7.1繼承就是吃現成飯································140 7.1.1怎樣實現繼承——歸類分析·········141 7.1.2怎樣確定繼承是否合理——“是”和“有”關系············142 7.1.3怎樣體現代碼重用·························142 7.1.4繼承就是站在巨人肩膀上·············143 7.1.5繼承好處多多,你都想到了嗎······143 7.1.6繼承的局限性·································143 7.1.7三種基本繼承類型·························143 7.2實現繼承················································145 7.2.1怎樣寫父類·····································145 7.2.2怎樣寫子類·····································146 7.2.3Likefatherlikeson——像爸爸就是兒子··············147 7.3你想讓子類怎樣繼承——訪問修飾符再探··················148 7.4更多繼承應用········································149 7.4.1繼承中如何應用重載·····················149 7.4.2一個實例教會你什么是覆蓋·········150 7.4.3一個實例教會你什么是屏蔽·········151 7.4.4細談萬類鼻祖Object和類中類——Class·············152 7.5抽象類····················································156 7.5.1抽象類不能創建對象·····················156 7.5.2抽象方法造就了抽象類·················156 7.6最終類····················································158 7.6.1最終類不能被繼承·························158 7.6.2一個例子搞懂最終類·····················159 7.6.3最終方法不能被覆蓋·····················159 7.6.4最終參數的值不能改變·················159 7.6.5所有這一切皆為提高執行速度·····159 實戰項目:幾何體面積和體積計算應用開發(1)···········160 鞏固提高練習和實戰項目大練兵·················163 第8章多態·····································165 8.1我們每天都在用多態····························165 8.1.1多態問題你注意到了嗎·················165 8.1.2讓我們一起走進多態·····················166 8.2實現多態················································168 8.2.1父類提供多態方法和接口·············168 8.2.2子類覆蓋多態方法或完善接口······169 8.2.3一個例子讓你明白應用多態·········170 8.3為什么剖析方法綁定····························171 8.3.1靜態綁定·········································171 8.3.2動態綁定·········································171 8.3.3綁定時如何處理方法調用·············171 8.4高手特餐——invokespecial和invokevirtual············172 實戰項目:幾何體面積和體積計算應用開發(2)··············173 鞏固提高練習和實戰項目大練兵·················175 第9章接口·····································177 9.1接口就是沒有完成的類························177 9.1.1接口只規定命名——如何完善由你················177 9.1.2接口體現最高形式的抽象·············178 9.1.3怎樣編寫接口·································179 9.1.4用接口還是用抽象類·····················180 9.1.5常用API接口·································181 9.2實現接口················································181 9.2.1實現接口就是完善接口中的方法···············181 9.2.2利用接口可以實現多重繼承·········183 9.2.3接口本身也可以繼承·····················186 9.2.4接口也可以作為參數·····················187 9.3應用接口的典型實例——Cloneable接口·············188 9.3.1實現Cloneable接口·······················188 9.3.2引用還是復制——看看這個例子就懂了··············189 9.3.3復制還分深淺——怎么回事·········189 9.3.4應用實例——利用最高超類實現Cloneable接口············192 鞏固提高練習和實戰項目大練兵·················193 第三部分Java提高 第10章細談數組·····························196 10.1為啥數組就是類··································196 10.1.1理解數組是怎樣工作的···············196 10.1.2創建數組就是創建數組對象·······197 10.1.3揭開數組的內幕···························198 10.2數組的操作··········································201 10.2.1訪問數組成員·······························201 10.2.2數組和循環總是閨蜜···················203 10.2.3訪問數組成員的特殊循環···········203 10.2.4用更多實例掌握數組的應用·······204 10.3高手要掌握的更多數組技術··············205 10.3.1多維數組·······································206 10.3.2非規則多維數組···························208 10.3.3怎樣把數組傳到方法···················208 10.3.4怎樣在方法中返回數組···············210 10.4API的Arrays類可以做些什么··········211 10.4.1常用方法·······································211 10.4.2排序和搜索···································212 10.4.3數組復制——避免菜鳥常犯的錯誤·················213 10.4.4高手必須掌握的另一個API接口——Comparable············215 實戰項目:在多級繼承中應用數組進行排序·····················216 鞏固提高練習和實戰項目大練兵·················218 第11章為何要再談字符串·················220 11.1為何字符串也是類······························220 11.1.1什么是字符串引用·······················220 11.1.2什么是字符串創建·······················221 11.1.3字符串構造方法···························221 11.1.4高手必須掌握的字符串方法·······222 11.2APIStringBuilder類····························225 11.2.1字符串內容可變還是不可變·······225 11.2.2StringBuilder的構造方法·············225 11.2.3高手必須掌握的其他常用方法···············226 11.2.4用實例學會StringBuilder應該很容易·················227 11.2.5StringBuilder的大哥——StringBuffer類··················229 11.3APIStringTokenizer類——分解字符串·················229 11.3.1token就是分解字符串的符號·····229 11.3.2構造方法和其他常用方法···········230 11.3.3用實例學會StringTokenizer·········231 11.4正則表達式··········································231 11.4.1高手必須知道的正則表達式·······231 11.4.2正則表達式規則···························232 11.4.3不再是秘密——String中處理正則表達式的方法·············234 11.4.4揭開Pattern和Matcher類的面紗·····················234 11.4.5驗證身份不是難事——實例說明一切·······························236 實戰項目:計算器模擬應用開發(1)·········237 鞏固提高練習和實戰項目大練兵·················239 第12章揭秘異常處理·······················241 12.1高手必須懂的API異常處理類·········241 12.2非檢查性異常······································242 12.2.1出錯第一現場在哪里···················242 12.2.2高手為什么要處理非檢查性異常·····················242 12.3檢查性異常··········································243 12.3.1同樣要分析出錯第一現場···········243 12.3.2處理常見檢查性異常——必須························243 12.4高手掌握異常處理機制······················243 12.4.1傳統機制·······································244 12.4.2高手為何要知道異常是怎樣在程序中傳播的·················246 12.4.3怎樣獲取更多異常信息···············247 12.4.4用實例解釋最直觀易懂···············248 12.5高手應用throw直接拋出異常··········250 12.5.1JVM怎樣自動拋出異常··············251 12.5.2你也可以直接拋出異常···············251 12.5.3你還可以重拋異常·······················252 12.6嵌套異常處理······································253 12.6.1什么是異常機制嵌套方式···········253 12.6.2嵌套異常是怎樣傳播的···············254 12.6.3為什么討論嵌套異常重拋···········255 12.7高手自己定義異常類··························256 12.7.1編寫自定義異常類原來如此簡單··························256 12.7.2高手掌握的自定義異常處理技巧···························257 12.7.3用實例解釋最直接易懂···············258 12.8異常鏈是什么······································259 12.8.1異常處理信息不見了——什么情況························259 12.8.2應用異常鏈保證不會丟失處理信息·······················259 12.9斷言——高手可以斷言可能發生的錯誤——assert···················261 12.9.1如何編寫斷言·······························261 12.9.2開啟和關閉斷言···························262 實戰項目:利用異常處理機制開發你的數據驗證類··················263 鞏固提高練習和實戰項目大練兵·················265 第13章高手掌握更多OOP技術·········266 13.1創建自己的API包·····························266 13.1.1包有哪些命名規范·······················267 13.1.2創建包文件···································267 13.1.3引入包文件···································268 13.2用Eclipse的包管理項目中的文件······269 13.3在Eclipse中創建文件庫····················270 13.3.1什么是JAR文件··························270 13.3.2創建文件庫···································270 13.4揭秘訪問權··········································271 13.5類的更多應用——你知多少··············273 13.5.1類之間的關系——父子、部下還是親戚·····················273 13.5.2什么是文件類·······························274 13.5.3內部類怎樣用·······························274 13.5.4為什么用靜態內部類···················276 13.5.5本地類是什么·······························278 13.5.6沒有名字的類——匿名類···········279 13.5.7這么多類——高手攻略···············279 13.6枚舉類是什么······································280 13.6.1怎樣定義和使用枚舉···················280 13.6.2靜態引入——編寫枚舉類更方便························282 13.6.3高手必須知道的枚舉···················283 13.6.4一個實例教會你應用枚舉···········285 13.7高手須知可變參數······························286 13.7.1可變參數是重載的極致應用·······286 13.7.2揭秘可變參數——它怎樣工作···287 13.7.3可變參數方法可以重載···············288 13.8什么是javadoc和怎樣用它···············288 實戰項目:創建可被任何程序調用的文件庫(JDK9和以后版本)·················290 鞏固提高練習和實戰項目大練兵·················292 第14章高手須知集合類····················293 14.1用集合類做些什么······························293 14.1.1集合類與數組的比較···················294 14.1.2集合類都有哪些···························294 14.1.3什么是Java的泛類型··················296 14.1.4高手怎樣應用泛類型···················301 14.1.5值得注意的類型安全問題···········303 14.2揭秘集合類··········································304 14.2.1可改變大小的數組·······················304 14.2.2鏈接表···········································306 14.2.3哈希集合·······································307 14.2.4元素迭代器···································308 14.2.5用實例教會你集合類應用···········309 14.3Map的集合類·····································311 14.3.1怎樣使用HashMap·······················311 14.3.2怎樣使用TreeMap························312 14.3.3怎樣對自定義類型TreeMap排序·····················314 14.4集合類和數據結構······························315 14.4.1堆棧···············································315 14.4.2隊列···············································315 14.4.3細說集合中的排序·······················316 14.4.4搜索——我要找到你···················318 14.4.5洗牌——想玩斗地主···················319 14.4.6集合類應用總結···························320 14.4.7高手理解集合類的同步與不同步······················321 實戰項目:利用HashMap開發產品管理應用························321 鞏固提高練習和實戰項目大練兵·················323 第15章多線程································325 15.1Java的本質是多線程··························325 15.1.1揭秘多線程怎樣工作···················325 15.1.2多任務和多處理是一回事嗎·······326 15.1.3多線程應用范圍太廣泛了···········326 15.1.4一張圖搞懂線程的5種狀態·······327 15.1.5你的第一個多線程程序···············327 15.2如何創建多線程··································329 15.2.1可以繼承Thread創建線程··········329 15.2.2可以完善Runnable接口來創建線程·························330 15.2.3多線程典型案例:生產-消費線程初探·······················331 15.3多線程控制··········································333 15.3.1設置優先級——setPriority方法·························333 15.3.2給其他線程讓步——yield方法···············································334 15.3.3讓我的線程休息——sleep方法···············································334 15.3.4讓我的線程加入執行——join方法·········································336 15.3.5打斷我的線程運行——interrupt方法···································336 15.3.6應用實例——線程和數組哪個運行的快······························337 15.4高手必知多線程協調··························339 15.4.1什么是多線程協調·······················339 15.4.2高手怎樣實現多線程協調···········340 15.4.3什么是易變數據——volatile·······340 15.4.4你的多線程協調嗎——synchronized··································340 15.4.5要協調必須等待——wait方法·······342 15.4.6你的線程協調得到通知了嗎——notify或notifyAll·························343 15.5高手須知更多多線程··························344 15.5.1一張圖看懂監視器和線程鎖定·······344 15.5.2更多多線程實戰術語和編程技巧····························345 15.5.3并行類包——java.util.concurrent······················346 實戰項目:利用多線程和并行處理開發生產-消費應用···············349 鞏固提高練習和實戰項目大練兵·················352 第四部分GUI和多媒體編程 第16章GUI——使你的窗口出彩········356 16.1從一個典型例子看懂GUI組件·········356 16.1.1Swing包中的組件從哪里來········357 16.1.2一張圖看懂組件的繼承關系·······357 16.1.3組件操作功能從Component繼承而來····················358 16.2創建框架就是實例窗口······················358 16.2.1怎樣顯示創建的窗口···················358 16.2.2怎樣關閉顯示的窗口···················359 16.2.3窗口位置和大小控制···················360 16.2.4在屏幕中央顯示窗口實例···········361 16.3用控制面板管理組件——JPanel·······362 16.3.1一個例子搞懂控制面板怎樣管理組件························362 16.3.2手把手教會你組件編程步驟·······362 16.3.3揭秘控制面板結構內幕···············363 16.4怎樣創建按鈕——JButton·················364 16.4.1創建按鈕舉例·······························364 16.4.2把組件顯示到默認位置——FlowLayout····································366 16.4.3按下按鈕要做什么——按鈕事件處理······································367 16.5標簽和文本字段是閨蜜······················368 16.5.1怎樣編寫標簽——JLabel·············368 16.5.2怎樣編寫文本字段——JTextField······································369 16.5.3怎樣處理文本字段事件···············370 16.5.4我想讓用戶輸入密碼——JPasswordField··························372 16.5.5應用實例——學會這些組件編程·········································372 16.6文本窗口的創建和應用——JTextArea····································374 16.6.1文本窗口的創建和方法調用·······374 16.6.2在文本窗口中設置滾動面板——JScrollPane····················375 16.6.3應用編程實例·······························375 16.7選項框——JCheckBox·······················376 16.7.1選項框事件處理···························377 16.7.2應用編程實例·······························378 16.8單選按鈕——JRadioButton················380 16.8.1單選按鈕事件處理·······················381 16.8.2應用編程實例·······························381 鞏固提高練習和實戰項目大練兵·················384 第17章GUI組件布局——安排組件位置和顯示風格··················385 17.1Java的6種布局管理類······················385 17.2系統預設的流程布局——FlowLayout·········································386 17.2.13種顯示位置································386 17.2.2編程實例·······································386 17.3圍界布局管理類——BorderLayout·······387 17.3.15種布局區域································388 17.3.2高手常用布局嵌套·······················389 17.3.3如何動態顯示按鈕的位置···········389 17.4給組件加上5種不同風格的邊框······390 17.4.1邊框BorderFactory設計編程步驟···············································391 17.4.2編程實例·······································392 17.5標記板——JTabbedPane·····················393 17.5.1如何應用標記板···························393 17.5.2編程實例·······································394 17.6箱式布局BoxLayout和網格布局GridLayout·································396 17.6.1如何應用箱式布局管理···············396 17.6.2如何應用網格布局管理···············397 17.6.3嵌套使用才更靈活·······················398 實戰項目:計算器模擬應用開發(2)·········399 17.7高手要掌握的最強布局管理GridBagLayout·····································400 17.7.1必須使用設計圖——方法和步驟···············································401 17.7.2編程實例·······································402 17.8用戶接口管理——UIManager可以做啥·························404 17.8.1常用用戶接口管理UIManager····································405 17.8.2編程實例·······································405 實戰項目:開發西方快餐銷售調查應用(1)·························406 鞏固提高練習和實戰項目大練兵·················407 第18章更多組件和事件處理··············409 18.1下拉列表——JComboBox··················409 18.1.1編程實例·······································410 18.1.2事件處理·······································411 18.1.3ItemListener事件處理接口··········411 18.1.4我怎么用它——編程實例···········413 18.2列表——JList······································416 18.2.1編程實例·······································417 18.2.2ListSelectionListener事件處理接口································418 18.2.3列表的更多編程技巧···················419 實戰項目:利用列表開發名詞學習記憶應用···································421 18.3菜單——JMenu···································422 18.3.1菜單編寫步驟·······························422 18.3.2編程舉例·······································423 18.3.3如何加入子菜單···························423 18.3.4菜單的事件處理···························424 18.3.5設置鍵盤助記——高手才會這樣做······················424 18.3.6高手設置快捷鍵···························425 18.3.7MenuListener處理菜單事件接口································426 實戰項目:開發西方快餐銷售調查應用(2)······················428 18.4高手須知彈出式菜單··························431 18.4.1一步步教會你編寫步驟···············431 18.4.2編程實例·······································431 18.4.3PopupMenuListener事件處理接口··························433 18.4.4鼠標右鍵激活彈出式菜單···········433 實戰項目:開發西方快餐銷售調查應用(3)··························434 18.5高手應掌握更多GUI組件·················435 18.5.1如何應用滑塊——JSlider············436 18.5.2如何應用進度條——JProgressBar··································438 18.5.3如何應用文件選擇器——JFileChooser··································439 18.5.4如何應用顏色選擇器——JColorChooser·······························441 18.5.5如何應用制表——JTable·············442 18.5.6如何應用樹——JTree··················443 18.5.7如何應用桌面板——JDesktopPane·································446 鞏固提高練習和實戰項目大練兵·················447 第19章揭秘事件處理那些事兒···········449 19.1高手須知事件處理內幕······················449 19.1.1事件處理是怎樣工作的···············449 19.1.2常用事件處理接口·······················451 19.1.3為何要用適配器···························452 19.1.4適配器應用實例···························453 19.2高手必知鼠標事件處理······················454 19.2.1都有哪些鼠標事件·······················454 19.2.2鼠標事件處理接口和適配器·······454 19.2.3鼠標事件處理演示程序···············454 19.3高手須知鍵盤事件處理······················455 19.3.1鍵盤事件處理接口和適配器·······456 19.3.2鍵盤事件處理常用方法···············456 19.4高手掌握的GUI組件編程技巧·········457 19.4.1組件編程的6種方式···················457 19.4.2事件處理的6種方式···················461 實戰項目:計算器模擬應用開發(3)·········463 鞏固提高練習和實戰項目大練兵·················465 第20章多媒體編程——高手須知的那些事兒·············467 20.1字體編程··············································467 20.1.1字體編程常用術語·······················467 20.1.2字體編程常用方法和舉例···········468 20.1.3應用實例學會字體編程···············469 20.2顏色編程··············································470 20.2.1顏色編程常用術語·······················471 20.2.2顏色編程常用方法和舉例···········471 20.2.3應用實例學會顏色編程···············472 20.3JavaFX圖形編程·································473 20.3.1JavaFX編程步驟··························473 20.3.2圖形編程常用方法·······················474 20.3.3圖形編程步驟·······························474 20.3.4應用實例學會圖形編程···············475 20.4JavaFX圖像編程·································476 20.4.1Java支持的4種圖像格式···········476 20.4.2圖像編程常用方法·······················476 20.4.3圖像編程步驟·······························477 20.4.4應用實例學會圖像編程···············477 20.5JavaFX音頻編程·································478 20.5.1Java支持的3種音頻格式···········478 20.5.2音頻編程常用方法·······················478 20.5.3音頻編程步驟·······························479 20.5.4播放音樂編程實例·······················479 實戰項目:利用多媒體開發英文字母學習游戲應用·················480 鞏固提高練習和實戰項目大練兵·················483 第五部分高手進階——數據流處理和編程 第21章文件I/O······························486 21.1數據流和文件······································486 21.1.1文件I/O基本知識須知················487 21.1.2揭秘文件路徑·······························487 21.1.3用實例看懂絕對路徑和規范路徑···················488 21.1.4高手理解URI、URL和URN······488 21.1.5文件類常用方法···························488 21.1.6文件I/O中為什么要緩沖············492 21.1.7文件I/O必須處理異常················492 21.2文本文件I/O·······································492 21.2.1文本文件輸出·······························493 21.2.2緩沖和無緩沖的文本輸出···········493 21.2.3文本文件輸入·······························495 21.2.4文本文件輸入實例·······················496 實戰項目:開發產品銷售文本文件管理應用··················498 21.3二進制文件I/O···································502 21.3.1二進制文件的輸出·······················502 21.3.2二進制文件輸出舉例···················503 21.3.3二進制文件的輸入·······················504 21.3.4二進制文件輸入實例···················505 實戰項目:開發產品銷售二進制文件管理應用··············507 21.4高手須知對象序列化I/O···················510 21.4.1你的對象序列化了嗎···················510 21.4.2手把手教會你對象序列化···········511 21.4.3對象序列化常用類和方法···········511 21.4.4對象序列化編程步驟···················511 實戰項目:利用對象序列化開發產品銷售文件管理應用···················512 21.5隨機文件I/O·······································517 21.5.1隨機文件I/O常用方法和訪問模式····················517 21.5.2文件記錄和位置計算···················518 21.5.3用實例學會隨機文件I/O·············518 21.6高手須知更多文件I/O編程技術······520 21.6.1細談JFileChooser·························520 21.6.2Java支持的壓縮文件I/O·············521 21.6.3一步步教會你壓縮文件I/O·········521 21.6.4用Scanner讀入文件····················527 實戰項目:開發產品銷售隨機文件管理應用············528 鞏固提高練習和實戰項目大練兵·················534 第22章數據庫編程··························536 22.1揭秘JDBC···········································536 22.2數據庫基本知識··································537 22.3數據庫語言——SQL··························538 22.3.1SQL的6種基本指令···················538 22.3.2SQL的基本數據類型···················538 22.3.3創建指令——CREATE················539 22.3.4選擇指令——SELECT·················539 22.3.5更新指令——UPDATE················540 22.3.6插入指令——INSERT·················540 22.3.7刪除記錄指令——DELETE········540 22.3.8刪除數據表指令——DROP·········541 22.4數據庫和JDBC驅動軟件的安裝及測試·············541 22.4.1下載數據庫軟件···························541 22.4.2數據庫安裝···································541 22.4.3數據庫運行測試···························542 22.4.4下載JDBC驅動軟件···················543 22.4.5一步步教會你在Eclipse中連接數據庫··········544 22.4.6一個實例搞懂JDBC是否連接成功············545 22.4.7編寫第一個數據庫程序···············545 22.5Java程序和數據庫對話······················547 22.5.1連接數據庫——高手都會這樣做················547 22.5.2向數據庫發送SQL指令··············548 22.5.3接收從數據庫傳回的記錄···········549 22.5.4提取和更新傳回的記錄···············550 22.5.5預備指令是怎么回事···················551 實戰項目:利用數據庫和GUI開發產品銷售管理應用(1)··············553 22.6高手了解更多JDBC編程··················558 22.6.1細談元數據是啥和怎樣用···········558 22.6.2什么是事務處理和怎樣實現·······559 22.6.3三個步驟兩個實例搞懂事務處理編程·····················559 實戰項目:利用數據庫和GUI開發產品銷售管理應用(2)················560 鞏固提高練習和實戰項目大練兵·················564 第23章網絡編程·····························565 23.1為什么高手必知網絡編程··················565 23.1.1必須遵循通信協議·······················565 23.1.2URL和IP地址是一回事嗎·········566 23.1.3URL和URI··································566 23.1.4端口和通信號·······························567 23.1.5一張表看懂端口分配···················567 23.1.6揭秘HTTP····································568 23.1.7URL和URLConnection編程實例························569 23.2一步步教會你網絡編程······················570 23.2.1細談Socket···································570 23.2.2StreamSockets和DatagramSockets·····················571 23.2.3用戶-服務器編程步驟················571 23.2.4一個代碼實例教會你用戶-服務器編程·························571 23.2.5單用戶-服務器程序測試運行步驟··························574 23.2.6手把手教你DatagramSocket用戶-服務器編程············574 23.3煉成網絡編程高手從這里起步··········578 23.3.1手把手教你Socket多用戶-服務器編程·············578 23.3.2多用戶-服務器程序測試運行步驟·······················580 23.3.3手把手教你Datagram多用戶-服務器編程·························581 23.3.4多用戶-服務器數據庫編程········583 實戰項目:開發多用戶-服務器產品銷售數據庫管理應用··············584 23.4高手必會的高級網絡編程··················590 23.4.1面向連接傳輸與面向傳輸連接···························590 23.4.2怎樣設置Socket超時控制··········591 23.4.3揭秘Socket中斷技術··················592 23.4.4揭秘Socket半關閉技術··············593 23.4.5揭秘java.nio·································593 23.4.6數據流和數據塊——網絡編程用哪個····················594 23.4.7數據塊編程需要通道技術——Channel··························594 23.4.8一步步教會你通道技術網絡編程························594 23.4.9應用緩沖的通道編程技術···········595 23.4.10數據塊中字符集的定義、編碼和譯碼····················596 23.4.11應用選擇器Selector實現多用戶-服務器編程··················597 23.4.12一步步教會你選擇器多用戶-服務器編程··················597 23.4.13通道和選擇器編程實例·············598 實戰項目:開發多用戶-服務器聊天室應用························602 鞏固提高練習和實戰項目大練兵·················606 |
序: |