內(nèi) 容 簡 介本書以目前Java的較新版本Java SE 6.0為依托,結(jié)合Java語言特性和實戰(zhàn)案例,充分融入了企業(yè)開發(fā)過程中編程人員遇到的種種Java核心技術(shù)問題和編程思想,全面系統(tǒng)地介紹了Java語言的基礎知識、高級編程技術(shù)及應用方向。書中內(nèi)容由淺入深、循序漸進,囊括了Java基本語法、數(shù)組和常用算法,Java面向?qū)ο蟮木幊趟枷耄包括一些Java高級特性,并且將一些比較流行的項目融入本書中,如聊天室程序、網(wǎng)絡五子棋、仿QQ的網(wǎng)絡聊天軟件JQ等,使讀者在較短的時間內(nèi)就能夠熟練掌握Java特性和項目實戰(zhàn)的方方面面。本書在講解的過程中,結(jié)合Java知識點,引用了大量的應用實例,并通過源代碼一一列舉,且每一部分內(nèi)容都包含詳細的注釋和技巧提示,有助于初學者理解和把握問題的精髓,將所掌握的技術(shù)靈活應用到后期實際的項目開發(fā)過程中。本書既適合初學者使用,也適合作為廣大軟件開發(fā)者和有一定經(jīng)驗的編程愛好者的參考用書,同時也可以作為高等院校及培訓學校相關課程的教材使用。前 言
Java SE(Java Standard Edition,Java標準版)是Sun Microsystems公司平臺體系結(jié)構(gòu)中最基礎也是最底層的版本,它是各種應用平臺的基礎。Java SE不僅包含了開發(fā)和部署各種桌面應用程序的API,還包含了支持Java EE企業(yè)級的應用開發(fā)以及Java ME嵌入式開發(fā)的相關類。隨著Sun投入Oracle的懷抱,Java SE的功能將會進一步加強。
Java SE版本的各種特性的學習對初學者尤為重要。它不僅是初學者通向成功的基石,而且對它掌握的程度直接決定讀者后期作為Java軟件工程師的等級。本書是在《軟件開發(fā)課堂——Java基礎與案例開發(fā)詳解》的基礎上進行的更新和升級,這一版本根據(jù)讀者朋友們的反饋,將系統(tǒng)進行了全面的更新,對于部分章節(jié)的內(nèi)容也做了適當?shù)恼{(diào)整,使本書更趨實用。
本書選用了大量的實際案例,將Java語言特性通過實戰(zhàn)代碼一一呈現(xiàn)出來,使讀者不用刻意去記憶其中的理論,就可以輕松掌握。本書中案例代碼注釋詳細,很多都通過截圖的形式展現(xiàn)出來,讓讀者一目了然。本書中具有代表性的操作以循序漸進的形式一步一步地進行引導和講解,讓讀者不僅能知其所以然,而且還能編寫出應用程序,具有較高的實用價值,講解過程中還對一些初學者極易犯的錯誤提供了相應的解決方案和應注意的事項或提示。這些錯誤都是編者在開發(fā)和教學過程中的實踐經(jīng)驗總結(jié),目的是讓讀者在最短的時間內(nèi),掌握最核心、最實用的技術(shù)。另外,書中每章的示例源代碼都放在所附光盤中,可幫助讀者更加輕松地學習。
本書共分為20章,各章簡介如下。
第1、2和3章:介紹Java環(huán)境的安裝配置,Java程序的開發(fā)過程和Java語言的基礎語法。
第4章:介紹數(shù)組和排序的相關知識。
第5章和第6章:介紹面向?qū)ο蟮木幊趟枷?mdash;—抽象、封裝、繼承和多態(tài)。本書中,這兩章的內(nèi)容最重要,讀者必須掌握其中的很多概念。
第7章:介紹面向?qū)ο蟮姆治雠c設計思想以及一些常用的設計習慣,對后期編程起到一定的指導作用。
第8章和第9章:介紹一些常用的類,對編程思想的運用和快速開發(fā)起到輔助作用。
第10章:介紹Java異常處理機制,該章是Java語言在健壯性上的體現(xiàn),建議讀者能熟練掌握。
第11章:介紹常用的數(shù)據(jù)結(jié)構(gòu)和泛型機制,對一些常用的集合類,建議讀者能熟練地掌握。
第12章:介紹Java多線程的相關知識,重點在于理解多線程的運行機制及線程同步的機制。
第13章:介紹I/O流,主要用于對文件的讀、寫等操作。
第14章:介紹GUI圖形界面編程,包括AWT抽象窗口工具包和Swing組件等,對本章的內(nèi)容讀者了解即可。
第15、16和19章:分別介紹反射、標注和Socket網(wǎng)絡等編程相關知識,多了解這些知識對開發(fā)將會有非常大的幫助。
第18章:介紹Java對數(shù)據(jù)庫的相關操作,對其中比較重要的用法和比較平常的技能要熟練掌握。
第17章和第20章:介紹單機版五子棋、網(wǎng)絡五子棋和仿QQ聊天室項目,多多研究和模仿,相信讀者會有意外的發(fā)現(xiàn)。
本書由徐明華、邱加永、紀希禹編著,參加本書編寫和核對的還有張新穎、于坤、單興華、鄭經(jīng)煜、周大慶、卞志城、孫連偉、聶靜宇、尼春雨、張麗、王國勝、張石磊、伏銀戀、蔣軍軍、蔣燕燕、王海龍、曹培培等;對他們的付出,在此表示特別感謝。
由于編者水平有限,書中難免有疏漏和不足之處,懇請專家和廣大讀者指正。
編 者目 錄
第1章 Java前奏 1
1.1 什么是Java 2
Java語言發(fā)展簡史 2
1.2 認識Java語言 3
1.2.1 Java語言的特性 3
1.2.2 Java Applet 5
1.2.3 豐富的類庫 5
1.2.4 Java的競爭對手 5
1.2.5 Java在應用領域的優(yōu)勢 7
1.3 Java平臺的體系結(jié)構(gòu) 8
1.3.1 Java SE標準版 8
1.3.2 Java EE企業(yè)版 10
1.3.3 Java ME微型版 11
1.3.4 三個版本間的關系 11
1.4 Java SE環(huán)境安裝和配置 12
1.4.1 什么是JDK 12
1.4.2 JDK的安裝目錄和實用命令
工具介紹 12
1.4.3 設置環(huán)境變量 14
1.4.4 驗證配置的正確性 14
1.5 本章練習 15
第2章 Java程序簡介 17
2.1 什么是程序 18
2.2 計算機中的程序 18
2.3 Java程序 19
2.3.1 Java程序中的類型 19
2.3.2 Java應用程序開發(fā)三部曲 21
2.3.3 開發(fā)第一個Java程序 21
2.3.4 Java代碼中的注釋 23
2.3.5 源碼文本字符集設置 24
2.3.6 常見錯誤解析 25
2.4 Java類庫組織結(jié)構(gòu)和文檔 29
2.5 Java虛擬機簡介 32
2.6 Java的垃圾回收器 34
2.7 上機練習 35
第3章 Java語言基礎入門 37
3.1 變量 38
3.1.1 什么是變量 38
3.1.2 為什么需要變量 38
3.1.3 變量的聲明和賦值 39
3.1.4 變量命名規(guī)范 39
3.1.5 經(jīng)驗之談——變量常見錯誤的
分析與處理 40
3.2 數(shù)據(jù)的分類 41
3.2.1 Java中的8種基本數(shù)據(jù)類型 42
3.2.2 數(shù)據(jù)進制 43
3.2.3 進制間的轉(zhuǎn)換 44
3.2.4 基本數(shù)據(jù)類型間的轉(zhuǎn)換 45
3.2.5 引用數(shù)據(jù)類型 46
3.3 標識符、關鍵字和常量 46
3.3.1 Java的標識符 46
3.3.2 關鍵字 47
3.3.3 常量 48
3.4 運算符 48
3.4.1 算術(shù)運算符 49
3.4.2 賦值運算符 51
3.4.3 關系運算符 52
3.4.4 邏輯運算符 53
3.4.5 位運算符 54
3.4.6 移位運算符 55
3.4.7 其他運算符 57
3.5 表達式 58
3.5.1 表達式簡介 58
3.5.2 表達式的類型和值 58
3.5.3 表達式的運算順序 59
3.5.4 優(yōu)先級和結(jié)合性問題 59
3.6 順序結(jié)構(gòu)和選擇結(jié)構(gòu) 60
3.6.1 順序語句 60
3.6.2 選擇條件語句 61
3.6.3 switch結(jié)構(gòu) 67
3.6.4 經(jīng)驗之談——switch結(jié)構(gòu)常見
錯誤的分析與處理 70
3.6.5 switch與多重if結(jié)構(gòu)比較 72
3.7 循環(huán)語句 72
3.7.1 while循環(huán) 73
3.7.2 經(jīng)驗之談——while循環(huán)的
常見錯誤 75
3.7.3 do-while循環(huán) 76
3.7.4 for循環(huán) 77
3.7.5 經(jīng)驗之談——for循環(huán)的
常見錯誤 81
3.7.6 循環(huán)語句小結(jié) 82
3.8 跳轉(zhuǎn)語句 83
3.8.1 break語句 83
3.8.2 continue語句 85
3.8.3 return語句 88
3.9 MyEclipse工具介紹 89
3.9.1 MyEclipse的安裝 89
3.9.2 MyEclipse工程管理 90
3.9.3 Java Debug調(diào)試技術(shù) 90
3.9.4 MyEclipse常用快捷鍵的
說明 91
3.9.5 修改注釋模板 92
3.10 本章練習 93
第4章 數(shù)組和排序算法 95
4.1 一維數(shù)組 96
4.1.1 為什么要使用數(shù)組 96
4.1.2 什么是數(shù)組 97
4.1.3 如何使用數(shù)組 98
4.1.4 經(jīng)驗之談——數(shù)組常見
錯誤 103
4.2 數(shù)組應用 104
4.2.1 求平均值、最大值
和最小值 105
4.2.2 遞歸調(diào)用 107
4.2.3 數(shù)組排序 109
4.2.4 數(shù)組復制 111
4.2.5 代碼優(yōu)化 113
4.3 多維數(shù)組 115
4.3.1 多重循環(huán) 115
4.3.2 二維數(shù)組 117
4.4 排序算法 119
4.4.1 冒泡排序 119
4.4.2 插入排序 121
4.4.3 快速排序 123
4.4.4 選擇排序 125
4.5 增強for循環(huán) 127
4.6 本章練習 128
第5章 抽象和封裝 131
5.1 面向過程的設計思想 132
5.2 面向?qū)ο蟮脑O計思想 132
5.3 抽象 133
5.3.1 了解對象 133
5.3.2 Java抽象思想的實現(xiàn) 134
5.4 封裝 135
5.4.1 對象封裝的概念 136
5.4.2 理解類 137
5.4.3 Java類模板創(chuàng)建 137
5.4.4 Java中對象的創(chuàng)建和使用 139
5.5 屬性 142
5.5.1 屬性的定義 142
5.5.2 變量 143
5.6 方法 145
5.6.1 方法的定義 145
5.6.2 方法的分類 148
5.6.3 構(gòu)造方法 150
5.6.4 方法重載 152
5.6.5 方法的調(diào)用 154
5.6.6 方法參數(shù)及其傳遞問題 157
5.6.7 理解main()方法語法
及命令行參數(shù) 160
5.7 this關鍵字 161
5.8 JavaBean 163
5.9 包 164
5.9.1 為什么需要包 164
5.9.2 如何創(chuàng)建包 165
5.9.3 編譯并生成包 166
5.9.4 使用帶包的類 167
5.9.5 JDK中常用包介紹 167
5.10 本章練習 168
第6章 繼承和多態(tài) 171
6.1 繼承 172
6.1.1 Java繼承思想的實現(xiàn) 173
6.1.2 繼承的優(yōu)點 175
6.1.3 super關鍵字 175
6.2 Object類 177
6.3 多態(tài) 179
6.3.1 多態(tài)概念的理解 179
6.3.2 Java中多態(tài)的實現(xiàn) 180
6.3.3 類型轉(zhuǎn)換、向上轉(zhuǎn)型
和向下轉(zhuǎn)型 184
6.3.4 動態(tài)綁定 186
6.4 訪問修飾符 188
6.5 static修飾符 189
6.5.1 靜態(tài)變量 189
6.5.2 靜態(tài)方法 190
6.5.3 靜態(tài)代碼塊 190
6.5.4 靜態(tài)導入 192
6.5.5 單態(tài)設計模式 192
6.6 final修飾符 193
6.7 abstract修飾符 195
6.8 接口 197
6.8.1 接口的定義及實現(xiàn) 197
6.8.2 接口中的常量 198
6.8.3 多重接口 199
6.9 本章練習 199
第7章 面向?qū)ο蟮姆治雠c設計 205
7.1 面向?qū)ο蟮姆治雠c設計簡介 206
7.1.1 類的設計建議 206
7.1.2 類名、變量名、方法名的
選取 207
7.1.3 類的屬性設計建議 208
7.1.4 類的方法設計建議 208
7.1.5 繼承的設計建議 209
7.2 對象模型建立 209
7.2.1 UML簡介 209
7.2.2 用例圖 211
7.2.3 類圖 211
7.2.4 序列圖 213
7.2.5 狀態(tài)圖 214
7.2.6 活動圖 215
7.2.7 組件圖 215
7.2.8 部署圖 216
7.3 類之間的關系 217
7.4 軟件的可維護與復用設計原則 220
7.5 本章練習 225
第8章 內(nèi)部類與包裝器 227
8.1 內(nèi)部類和內(nèi)部接口 228
8.1.1 成員內(nèi)部類 229
8.1.2 靜態(tài)內(nèi)部類 233
8.1.3 局部內(nèi)部類 234
8.1.4 匿名內(nèi)部類 237
8.2 對象包裝器 240
8.3 裝箱和拆箱 243
8.4 本章練習 245
第9章 常用類介紹 247
9.1 String類 248
9.1.1 字符串常量 250
9.1.2 字符串對象的操作 253
9.1.3 字符串對象的修改 256
9.1.4 類型轉(zhuǎn)換 259
9.2 StringBuffer和StringBuilder類 260
9.3 Runtime類的使用 263
9.4 日期類簡介 265
9.5 Java程序國際化的實現(xiàn) 269
9.6 Random類和Math類 274
9.7 枚舉 276
9.8 本章練習 280
第10章 Java異常處理 283
10.1 異常概述 284
10.2 認識異常 287
10.3 使用try和catch捕獲異常 288
10.4 使用throw和throws引發(fā)異常 292
10.5 finally關鍵字 295
10.6 getMessage和printStackTrace
方法 299
10.7 異常分類 300
10.8 自定義異常類 301
10.9 本章練習 303
第11章 Java集合框架和泛型機制 305
11.1 Java集合框架概述 306
11.2 Collection接口 306
11.3 Set接口實現(xiàn)類 308
11.3.1 實現(xiàn)類HashSet 309
11.3.2 實現(xiàn)類LinkedHashSet 312
11.3.3 實現(xiàn)類TreeSet 313
11.4 List接口實現(xiàn)類 319
11.4.1 實現(xiàn)類ArrayList 319
11.4.2 實現(xiàn)類LinkedList 321
11.4.3 實現(xiàn)類Vector 323
11.4.4 實現(xiàn)類Stack 325
11.5 Map接口 326
11.5.1 實現(xiàn)類HashMap 327
11.5.2 實現(xiàn)類LinkedHashMap 328
11.5.3 實現(xiàn)類TreeMap 329
11.5.4 實現(xiàn)類Properties 330
11.6 Collections類 332
11.7 泛型概述 335
11.8 本章練習 345
第12章 多線程 347
12.1 理解線程 348
12.1.1 什么是多線程 348
12.1.2 進程和線程的區(qū)別 349
12.1.3 線程的創(chuàng)建和啟動 349
12.1.4 Thread類介紹 352
12.1.5 為什么需要多線程 353
12.1.6 線程分類 353
12.2 線程的生命周期 355
12.2.1 線程的狀態(tài)及轉(zhuǎn)換 355
12.2.2 線程睡眠 356
12.2.3 線程讓步 358
12.2.4 線程的加入 359
12.3 線程的調(diào)度和優(yōu)先級 359
12.4 線程的同步 360
12.4.1 線程同步的方法 363
12.4.2 對象鎖 364
12.4.3 wait和notify方法 365
12.4.4 死鎖 369
12.5 集合類的同步問題 371
12.5.1 使用synchronized同步塊 371
12.5.2 使用集合工具類同步化
集合類對象 371
12.5.3 使用JDK 5.0后提供的并發(fā)
集合類 372
12.6 用Timer類調(diào)度任務 372
12.7 本章練習 373
第13章 Java I/O 375
13.1 java.io.File類 376
13.1.1 文件和目錄 376
13.1.2 Java對文件和目錄的操作 376
13.2 Java I/O原理 382
13.3 流類的結(jié)構(gòu) 382
13.3.1 InputStream和
OutputStream 383
13.3.2 Reader和Writer 384
13.4 文件流 385
13.4.1 FileInputStream和
FileOutputStream 386
13.4.2 FileReader和FileWriter 388
13.5 緩沖流 390
13.6 轉(zhuǎn)換流 391
13.7 數(shù)據(jù)流 393
13.8 打印流 395
13.9 對象流 396
13.9.1 序列化和反序列化操作 396
13.9.2 序列化的版本 399
13.10 隨機存取文件流 400
13.11 ZIP文件流 404
13.12 本章練習 408
第14章 圖形用戶界面設計 409
14.1 抽象窗口工具集(AWT) 410
14.1.1 AWT組件和容器 410
14.1.2 布局管理器 416
14.2 事件處理機制 422
14.2.1 事件監(jiān)聽器 423
14.2.2 事件適配器 427
14.3 AWT常用組件 429
14.3.1 界面組件 429
14.3.2 菜單組件 435
14.3.3 其他組件 439
14.4 Swing簡介 441
14.4.1 Swing體系 441
14.4.2 Swing組件的應用 442
14.5 可視化開發(fā)Swing組件 456
14.6 聲音的播放和處理 459
14.7 2D圖形的繪制 463
14.8 本章練習 465
第15章 反射 467
15.1 反射概述 468
15.1.1 Java中的反射機制 468
15.1.2 Java反射API 468
15.1.3 Class類 469
15.2 使用Java反射機制 470
15.2.1 獲取類型信息 470
15.2.2 創(chuàng)建對象 473
15.2.3 調(diào)用方法 475
15.2.4 訪問成員變量的值 477
15.2.5 操作數(shù)組 478
15.3 反射與動態(tài)代理 480
15.3.1 靜態(tài)代理 480
15.3.2 動態(tài)代理 482
15.4 本章練習 483
第16章 Java標注 485
16.1 標注概述 486
16.2 JDK內(nèi)置的基本標注類型 486
16.2.1 重寫Override 486
16.2.2 警告Deprecated 488
16.2.3 抑制警告
SuppressWarnings 489
16.3 自定義標注類型 490
16.4 對標注進行標注 491
16.4.1 目標Target 491
16.4.2 類型Retention 492
16.4.3 文檔Documented 493
16.4.4 繼承Inherited 493
16.5 利用反射獲取標注信息 494
16.6 本章練習 496
第17章 項目實戰(zhàn)1——單機版
五子棋游戲 497
17.1 功能描述 498
17.2 總體設計 498
17.3 代碼實現(xiàn) 498
17.4 程序的運行與發(fā)布 511
17.5 手動生成可執(zhí)行JAR文件 514
17.6 本章練習 516
第18章 Java數(shù)據(jù)庫編程 517
18.1 JDBC簡介 518
18.2 JDBC類和接口 518
18.2.1 DriverManager類 520
18.2.2 Connection接口 522
18.2.3 Statement接口 522
18.2.4 PreparedStatement接口 522
18.2.5 ResultSet接口 523
18.3 JDBC操作SQL 525
18.4 JDBC基本示例 529
18.5 JDBC應用示例 535
18.6 本章練習 547
第19章 Java網(wǎng)絡編程 549
19.1 網(wǎng)絡編程的基本概念 550
19.1.1 網(wǎng)絡基礎知識 550
19.1.2 網(wǎng)絡基本概念 551
19.1.3 網(wǎng)絡傳輸協(xié)議 552
19.2 Java網(wǎng)絡類和接口 553
19.3 InetAddress類 554
19.4 URL和URLConnection類 555
19.4.1 URL類 555
19.4.2 URLConnection類 558
19.5 Socket套接字 562
19.6 Datagram套接字 568
19.7 綜合示例 572
19.8 本章練習 580
第20章 項目實戰(zhàn)2——網(wǎng)絡五子棋
與網(wǎng)絡版JQ的開發(fā) 581
20.1 網(wǎng)絡五子棋 582
20.1.1 功能分析 582
20.1.2 網(wǎng)絡五子棋界面設計 584
20.1.3 網(wǎng)絡五子棋運行效果 596
20.2 網(wǎng)絡版JQ 597
20.2.1 需求描述 597
20.2.2 功能分析 598
20.2.3 主要功能實現(xiàn) 598
20.3 制作JAR包的補充說明 627
20.4 本章練習 627