-- 會員 / 註冊 --  
 帳號:
 密碼:
  | 註冊 | 忘記密碼
3/26 新書到! 3/19 新書到! 3/14 新書到! 12/12 新書到!
購書流程Q & A站務留言版客服信箱
3ds MaxMayaRhinoAfter EffectsSketchUpZBrushPainterUnity
PhotoShopAutoCadMasterCamSolidWorksCreoUGRevitNuke
C#CC++Java遊戲程式Linux嵌入式PLCFPGAMatlab
駭客資料庫搜索引擎影像處理FluentVR+ARANSYS深度學習
單晶片AVROpenGLArduinoRaspberry Pi電路設計CadenceProtel
HadoopPythonStm32CortexLabview手機程式AndroidiPhone
可查書名,作者,ISBN,3dwoo書號
詳細書籍分類

Java高手是怎樣煉成的:原理、方法與實踐

( 簡體 字)
作者:高永強 盧晨類別:1. -> 程式設計 -> JAVA -> 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
序: