內容簡介
本書側重於麵嚮對象設計,通過淺顯易懂的語言和代碼,很好地平衡瞭完整實例和解釋性討論,並圍繞著Java 語言的特性全麵透徹地介紹諸多編程技術。書中全麵介紹瞭Java 語言已經實現的封裝、繼承和多態性技術,並在介紹Swing GUI 的時候提及瞭事件驅動的編程,在介紹UML 和模式的同時進一步介紹瞭OOP。本書每節後都設計瞭相應的練習題,每章後都有針對本章內容的編程項目。本書不僅適閤初學者使用,還可以作為使用Java 的後續計算機科學課程的參考書。
作者簡介
Walter John Savitch(生於1943年2月21日)由於發現瞭復雜性類NL(非確定型對數空間)、以及定義NSPACE和DSPACE復雜性類之間關係的Savitch定理而被人熟知。他為建立復雜性類所做的工作有助於我們創建執行非確定性和概率推理的背景。他還在自然語言處理和數學語言學領域做瞭大量的工作。他一直專注於計算機計算,因為它在10年前就已經被應用到遺傳學和生物學。除瞭在理論計算機科學上所做的工作,Savitch還編著瞭很多關於學習使用C/C++、Java、Ada、Pascal等語言進行編程的教科書。在Stephen Cook的指導下,Savitch在1969年獲得瞭加州大學伯剋利分校的數學博士學位。 從那時候開始他就一直是加州大學聖地亞哥分校(UCSD)的教授,現在他還是計算機科學專業的名譽教授。
譯有《完美Java(第6版)》、《信息架構:**Web設計(第4版)》《像富人一樣思考》《故事場景摩天樓》《互聯網領導思維》《斷點:互聯網進化啓示錄》《遊戲編程**指南》《Unity 3.x遊戲開發實例》《iPhone應用用戶體驗設計實戰與案例》《社交網站界麵設計》等書。
目錄
第1章 入門知識 1
1.1 Java簡介 2
Java語言的起源 ★ 2
對象和方法 3
小程序(applet)★ 4
一個Java應用程序示例 4
字節碼和Java虛擬機 7
類裝載器★ 9
編譯一個Java程序或類 9
運行一個Java程序 9
小貼士:錯誤消息 10
1.2 錶達式和賦值語句 11
標識符 11
變量 12
賦值語句 14
小貼士:初始化變量 15
更多賦值語句知識★ 16
賦值兼容性 17
常量 18
算數運算符和錶達式 19
括號和優先級規則★ 20
整數和浮點數除法 22
陷阱:浮點數的捨入錯誤 22
陷阱:整數相除 23
類型轉換 24
自增運算符和自減運算符 25
1.3 String類 27
字符串常量和變量 27
字符串連接 28
類 29
String類的方法 30
轉義字符 34
字符串處理 35
Unicode字符集★ 36
1.4 程序風格 37
命名常量 37
Java拼寫約定 39
注釋 40
縮進 41
本章小結 41
自測題答案 42
編程項目 44
第2章 流程控製 47
2.1 屏幕輸齣 48
System.out.println 48
小貼士:編輯輸齣格式的不同方法 50
使用printf編輯輸齣格式 51
小貼士:用printf編輯金額格式 54
小貼士:遺留代碼 55
使用NumberFormat編輯金額輸齣格式 ★ 56
導入包和類 58
DecimalFormat類 ★ 59
2.2 使用Scanner類進行控製颱輸入 62
Scanner類 63
陷阱:行終止符'
'的處理 67
空字符串 68
小貼士:輸入提示 68
小貼士:輸入反饋 68
示例:自助結賬程序 70
其他輸入分隔符 70
2.3 文件輸入簡介 72
用Scanner類進行文本文件輸入 72
本章小結 75
自測題答案 75
編程項目 77
第3章 控製流 81
3.1 分支機製 82
if-else語句 82
省略else 83
復閤語句 83
小貼士:放置花括號 84
嵌套語句 85
多分支if-else語句 86
示例:州所得稅 86
switch語句 88
陷阱:忘記switch語句中的break 91
條件運算符 ★ 92
3.2 布爾錶達式 92
簡單布爾錶達式 93
陷阱:用=代替== 93
陷阱:使用==比較字符串 94
字典順序和字母順序 95
建立布爾錶達式 97
陷阱:不等式串 98
計算布爾錶達式 98
小貼士:命名布爾boolean變量 101
短路求值與完整求值 101
優先級和結閤規則 102
3.3 循環 107
while語句和do-while語句 108
算法和僞代碼 110
示例:分數列錶的平均分 112
for語句 113
for語句中的逗號 115
小貼士:重復N次循環 116
陷阱:for語句中多餘的分號 116
陷阱:無限循環 117
嵌套循環 118
break語句和continue語句★ 120
exit語句 121
3.4 調試 122
循環bug 122
跟蹤變量 122
常規調試技術 123
示例:調試一個輸入驗證循環 124
預防性編碼 127
斷言檢查★ 127
3.5 生成隨機數★ 129
Random對象 130
Math.random( )方法 131
本章小結 132
自測題答案 132
編程項目 136
第4章 類的定義 I 141
4.1 類的定義概述 142
實例變量和方法 145
方法續論 147
小貼士:任何方法都能用作void方法 150
局部變量 152
塊 152
小貼士:在一個for語句中聲明變量 153
原始類型參數 154
陷阱:術語“形參”和“實參”的使用 159
類參數的簡單示例 160
this參數 160
返迴布爾值的方法 162
方法equals和toString 164
遞歸方法 166
小貼士:對方法進行測試 167
4.2 信息的隱藏和封裝 168
修飾符public和private 169
示例:另一個日期類 170
get和set方法 171
小貼士:一個類可以訪問該類所有對象的私有成員 174
小貼士:set方法可以返迴一個布爾值 175
前置條件和後置條件 176
4.3 重載 177
重載的規則 177
陷阱:重載與自動類型轉換 180
陷阱:不能根據返迴類型進行重載 182
4.4 構造函數 183
構造函數的定義 183
小貼士:你可以在構造函數中調用另一個方法 190
小貼士:構造函數帶有一個this參數 190
小貼士:添加一個無參數構造函數 190
示例:日期類的最終版本 191
默認變量初始化 192
另一種初始化實例變量的方法 192
示例:一個寵物記錄類 193
StringTokenizer類★ 196
本章小結 200
自測題答案 201
編程項目 204
第5章 類的定義 II 211
5.1 靜態方法和靜態變量 212
靜態方法 212
陷阱:在靜態方法中調用非靜態方法 215
小貼士:你可以在任何類中放置main函數 215
靜態變量 218
Math類 222
封裝類 225
自動裝箱和拆箱 226
封裝類中的靜態方法 227
陷阱:封裝類沒有無參數構造函數 229
5.2 引用和類參數 231
變量和內存 231
引用 232
類參數 237
陷阱:對類類型的變量使用=和== 240
常量null 241
陷阱:空指針異常 242
new運算符和匿名對象 242
示例:鍵盤輸入的另一種方法★ 243
小貼士:使用靜態導入★ 245
5.3 引用的使用和濫用 246
示例:Person類 246
陷阱:null可以作為方法的參數 251
拷貝構造函數 253
陷阱:隱私泄露 255
可變類和不可變類 258
小貼士:深拷貝vs.淺拷貝 259
小貼士:假設你的同事是惡意的 260
5.4 包和javadoc 260
包和import語句 261
java.lang包 262
包名和目錄 262
陷阱:子類不是自動導入的 264
默認包 264
陷阱:不要在類路徑中包含當前目錄 264
編譯時指定類路徑★ 265
命名衝突★ 266
javadoc簡介 ★ 266
為javadoc注釋類★ 267
運行javadoc★ 268
本章小結 269
自測題答案 270
編程項目 273
第6章 數組 279
6.1 數組簡介 280
數組的創建和訪問 280
length實例變量 283
小貼士:在數組中使用for循環 284
陷阱:數組下標總是從0開始 285
陷阱:數組越界 285
數組的初始化 285
陷阱:字符數組不是字符串 287
6.2 數組和引用 287
數組是對象 288
陷阱:具有類基本類型的數組 289
數組參數 289
陷阱:在數組中使用=和== 291
main方法的參數★ 294
返迴數組的方法 295
6.3 用數組進行編程 297
部分填充數組 297
示例:部分填充數組的類 300
小貼士:get方法不需要返迴實例變量 303
“for-each”循環★ 303
參數個數可變的方法★ 306
示例:一個字符串處理示例★ 308
數組實例變量的隱私泄露 309
示例:對數組排序 312
枚舉類型★ 315
小貼士:在switch語句中使用枚舉類型★ 319
6.4 多維數組 321
多維數組的基礎知識 321
使用length實例變量 323
參差數組★ 323
多維數組參數和返迴值 324
示例:一個成績冊類 325
本章小結 330
自測題答案 330
編程項目 336
第7章 繼承 343
7.1 繼承的基礎知識 344
派生類 344
重寫方法的定義 352
修改重寫方法的返迴類型 353
修改重寫方法的訪問權限 354
陷阱:重寫 vs. 重載 354
super構造函數 355
this構造函數 356
小貼士:派生類的對象有多個類型 357
陷阱:術語子類和超類 359
示例:增強的StringTokenizer類★ 359
7.2 封裝和繼承 362
陷阱:基類中私有變量的使用 362
陷阱:私有方法不能被有效地繼承 364
受保護訪問和包訪問 364
陷阱:忘記默認包 366
陷阱:受保護訪問的限製★ 366
7.3 使用繼承編程 368
小貼士:靜態變量是繼承的 368
小貼士:“is a”vs. “has a” 369
訪問重新定義的基類方法 369
陷阱:你不能使用多個super 370
Object類 371
定義equals的正確方式 371
小貼士:getClass vs. instanceof★ 373
本章小結 377
自測題答案 377
編程項目 380
第8章 多態與抽象類 385
8.1 多態 386
後期綁定 386
final修飾符 388
示例:銷售記錄 389
在toString中使用後期綁定 394
陷阱:靜態方法不使用後期綁定 395
嚮下轉型和嚮上轉型 396
陷阱:嚮下轉型 398
小貼士:檢查嚮下轉型是否是閤法的 399
clone方法淺析 400
陷阱:有時clone方法的返迴類型是對象 401
陷阱:拷貝構造函數的限製★ 402
8.2 抽象類 405
抽象類綜述 405
陷阱:你無法創建抽象類的實例 408
小貼士:抽象類是一種類型 409
本章小結 410
自測題答案 410
編程項目 412
第9章 異常處理 415
9.1 異常處理基礎知識 416
try-catch機製 417
用Scanner類進行異常處理 418
小貼士:異常控製的循環 419
拋齣異常 421
示例:異常處理的“玩具”示例 422
異常類 426
標準包中的異常類 427
定義異常類 428
小貼士:保留getMessage 432
小貼士:異常類可以攜帶任何類型的消息 434
多個catch塊 438
陷阱:先捕獲更具體的異常 439
9.2 在方法中拋齣異常 441
在方法中拋齣異常概述 441
在throws從句中聲明異常 443
捕獲或聲明規則的例外情況 445
派生類中的throws從句 447
何時使用異常 447
示例:檢索高分 448
事件驅動編程★ 451
9.3 更多異常處理編程技術 452
陷阱:嵌套的try-catch塊 452
finally塊★ 452
重新拋齣異常★ 454
AssertionError類★ 454
ArrayIndexOutOfBoundsException 454
本章小結 455
自測題答案 455
編程項目 459
第10章 文件I/O 463
10.1 文件I/O簡介 464
流 464
文本文件和二進製文件 465
10.2 文本文件 466
寫入文本文件 466
陷阱:try塊是一個塊 470
陷阱:覆蓋輸齣文件 471
追加到文本文件末尾 471
小貼士:toString可以幫助文本文件的輸齣 472
從文本文件中讀取 473
使用Scanner讀取文本文件 473
用Scanner測試文本文件的結束 475
使用BufferedReader讀取文本文件 480
小貼士:用BufferedReader讀取數字 483
用BufferedReader測試文本文件的結束 484
路徑名 485
嵌套的構造函數調用 486
System.in、System.out和System.err 487
10.3 File類 489
用File類編程 489
10.4 二進製文件★ 492
將簡單數據寫入二進製文件中 493
UTF和writeUTF 496
從二進製文件中讀取簡單數據 497
檢查二進製文件的結束 501
陷阱:用錯誤的方式檢查文件結束 502
對象的二進製I/O 503
Serializable接口 505
陷阱:將類類型混閤在同一個文件中 506
二進製文件中的數組對象 506
10.5 隨機存取二進製文件★ 508
讀寫同一個文件 508
陷阱:RandomAccessFile不需要從空文件開始 512
本章小結 512
自測題答案 513
編程項目 516
第11章 遞歸 521
11.1 遞歸void方法 522
示例:垂直顯示的數字 523
跟蹤遞歸調用 525
遞歸詳解 527
陷阱:無限遞歸 528
遞歸的棧★ 530
陷阱:棧溢齣★ 531
遞歸與迭代 531
11.2 返迴值的遞歸方法 532
返迴值的遞歸方法的一般形式 532
示例:另一個冪方法 532
11.3 遞歸思維 536
遞歸設計技巧 536
二分查找★ 537
二分查找的效率★ 542
示例:查找一個文件 543
本章小結 546
自測題答案 546
編程項目 550
第12章 UML和模式 555
12.1 UML 556
UML的曆史 557
UML類圖 557
類交互 557
繼承圖 558
UML的更多知識 559
12.2 模式 ★ 560
適配器模式★ 560
模型-視圖-控製器模式★ 560
示例:排序模式 561
排序模式的限製 566
排序模式的效率★ 567
小貼士:語用學和模式 567
模式形式 567
本章小結 568
自測題答案 568
編程項目 570
第13章 接口和內部類 573
13.1 接口 574
接口概述 574
抽象類實現接口 576
派生接口 577
陷阱:接口語義不會被強製執行 578
Comparable接口 579
示例:使用Comparable接口 580
接口中的預定義常量 584
陷阱:不一緻的接口 584
Serializable接口★ 587
Cloneable接口 587
13.2 內部類的簡單使用 590
幫助類 590
小貼士:內部類和外部類可以訪問彼此的私有成員 591
示例:一個銀行賬戶類 591
內部類的.class文件 595
陷阱:內部類的其他用途 595
13.3 內部類的更多內容 595
靜態內部類 595
公有內部類 596
小貼士:調用外部類的方法 598
嵌套內部類 599
內部類和繼承 599
匿名類 600
小貼士:為什麼要使用內部類 602
本章小結 602
自測題答案 603
編程項目 607
第14章 泛型和ArrayList類 611
14.1 ArrayList類 612
使用ArrayList類 613
小貼士:在ArrayList中添加元素的總結 617
ArrayList類中的方法 618
“for-each”循環 620
示例:高爾夫球成績 623
小貼士:使用trimToSize節約內存 625
陷阱:clone方法會進行淺拷貝★ 625
Vector類 626
參數化的類和泛型 627
陷阱:非參數化的ArrayList和Vector類 627
14.2 泛型 627
泛型基礎知識 627
陷阱:用-Xlint選項編譯 629
示例:有序對的泛型類 629
陷阱:泛型構造函數名沒有類型參數 632
陷阱:你不能用原始類型替換類型參數 633
陷阱:並不是在使用類型名稱的任何地方都可以使用類型參數 633
陷阱:泛型類的實例化不可以是數組基本類型 633
小貼士:類定義中可以有多個類型參數 634
陷阱:泛型類不能是異常類 635
類型參數的限製 636
小貼士:泛型接口 638
泛型方法★ 638
泛型類的繼承★ 639
本章小結 641
自測題答案 641
編程項目 643
第15章 鏈式數據結構 647
15.1 Java鏈錶 649
示例:簡單的鏈錶類 649
使用鏈錶 652
陷阱:隱私泄露 657
節點內部類 657
示例:泛型鏈錶 660
陷阱:使用Node,而不是Node<T> 664
鏈錶的equals方法 664
15.2 拷貝構造函數和clone方法★ 665
簡單的拷貝構造函數和clone方法★ 666
異常★ 666
陷阱:clone方法在Object中是受保護的★ 668
小貼士:使用類型參數限製可以得到更好的clone方法★ 669
示例:帶有深拷貝clone方法的鏈錶★ 672
小貼士:剋隆是一種“全有或者全無”事件 674
15.3 迭代器 675
定義一個迭代器類 675
添加和刪除節點 680
15.4 鏈錶的變形 683
雙嚮鏈錶 683
棧數據結構 691
隊列數據結構 693
運行時間和大O符號 695
鏈錶的效率 699
15.5 鏈式哈希錶 700
字符串的哈希函數 701
哈希錶的效率 704
15.6 set 704
set的基本操作 705
使用鏈錶的set的效率 709
15.7 樹 710
樹的性質 710
示例:一個二叉查找樹類 ★ 712
二叉查找樹的效率★ 716
本章小結 716
自測題答案 717
編程項目 722
第16章 集閤、映射和迭代器 725
16.1 集閤 726
通配符 727
集閤框架 728
陷阱:可選操作 733
小貼士:處理所有這些異常 733
具體的集閤類 734
ArrayList<T>和Vector<T>之間的區彆 741
集閤框架的非參數化版本★ 742
陷阱:省略<T> 742
16.2 Map映射 742
具體的Map類 744
16.3 迭代器 748
迭代器的概念 748
Iterator<T>接口 748
小貼士:for-each循環作為迭代器 750
列錶迭代器 751
陷阱:next可以返迴一個引用 753
小貼士:定義自己的迭代器類 754
本章小結 755
自測題答案 755
編程項目 756
第17章 Swing I 761
17.1 事件驅動編程 762
事件和監聽器 763
17.2 按鈕、事件和其他Swing基礎知識 764
示例:一個簡單的窗口 764
陷阱:忘記編寫關閉窗口按鈕的代碼 768
按鈕 769
動作監聽器和動作事件 770
陷阱:修改actionPerformed的方法頭 771
小貼士:結束一個Swing程序 772
示例:第一個Swing GUI的更好版本 772
標簽 775
顔色 776
示例:一個帶有標簽和顔色的GUI 777
17.3 容器和布局管理器 779
邊界布局管理器 779
流布局管理器 782
網格布局管理器 783
麵闆 786
示例:用麵闆創建3種顔色 787
Container類 790
小貼士:分彆編寫GUI的外觀和動作 792
模型-視圖-控製器模式★ 793
17.4 菜單和按鈕 793
示例:一個帶有菜單的GUI 794
菜單、菜單項和菜單欄 794
嵌套菜單★ 798
AbstractButton類 798
setActionCommand方法 801
監聽器作為內部類★ 802
17.5 文本框和文本域 804
文本框和文本域概述 804
小貼士:給文本域添加標簽 809
小貼士:輸入和輸齣數字 810
一個Swing計算器 810
本章小結 815
自測題答案 815
編程項目 821
第18章 Swing II 823
18.1 窗口監聽器 824
示例:一個窗口監聽器內部類 825
dispose方法 828
陷阱:忘記調用setDefaultCloseOperation 829
WindowAdapter類 829
18.2 圖標和滾動條 831
圖標 831
滾動條 836
示例:可以改變可見性的組件 840
18.3 Graphics類 842
圖形對象的坐標係統 842
paint方法和Graphics類 843
繪製橢圓 848
繪製弧綫 848
圓角矩形★ 851
麵闆的paintComponent 851
動作繪製和repaint 852
更新GUI的更多細節★ 856
18.4 顔色 857
指定繪圖顔色 857
定義顔色 858
陷阱:使用double定義顔色 859
JColorChooser對話框窗口 860
18.5 字體drawString方法 862
drawString方法 863
字體 864
本章小結 867
自測題答案 867
編程項目 871
第19章 Java永不落幕 875
19.1 多綫程 876
示例:一個無響應的GUI 877
Thread.sleep 877
getGraphics方法 880
使用綫程修復一個無響應的程序 881
示例:一個多綫程程序 881
Thread類 881
Runnable接口★ 884
競爭條件和綫程同步★ 886
19.2 流套接字網絡 890
套接字 890
套接字和綫程 893
URL類 894
19.3 JavaBeans 895
組件模式 895
JavaBeans模型 895
19.4 Java和數據庫連接 896
關係數據庫 896
Java DB和JDBC 897
SQL 898
19.5 用JSP進行Web編程 906
applet、servlet和JSP 906
Oracle GlassFish企業級服務器 908
HTML錶單――通用網關接口 909
JSP聲明、錶達式、scriptlet和指令 911
19.6 淺談Java 8中的函數式編程 918
19.7 淺談JavaFX 924
本章小結 936
自測題答案 937
編程項目 938
第20章 applet和HTML1
附錄A 關鍵字 941
附錄B 優先級和結閤性規則 943
附錄C ASCII字符集 945
附錄D printf的格式規範 947
附錄E 類和接口總結 949
1 英文原版書的第20章是放在相關配套網站上的,本中文版與其保持一緻,也放在www.broadview.com.cn/32866,讀者可下載閱讀。
前言/序言
譯者序
20 世紀90 年代,硬件領域齣現瞭單片式計算機係統,這種價格低廉的係統一齣現就立即引起瞭自動控製領域人員的注意,因為使用它可以大幅度提升消費類電子産品(如電視機頂盒、麵包烤箱、移動電話等)的智能化程度。Sun 公司為瞭搶占市場先機,在1991 年成立瞭一個被稱為Green 的項目小組,由James Gosling 等工程師開發齣Java語言的雛形,其最初被命名為Oak,於1995 年5 月以Java 這個名稱正式發布。
作為一種計算機編程語言,Java 擁有跨平颱、麵嚮對象、泛型編程的特性,其廣泛應用於企業級Web 應用開發和移動應用開發中。伴隨著互聯網的迅猛發展,Java 逐漸成為重要的網絡編程語言。
本書作者通過淺顯易懂的語言和大量的示例代碼,力求讓讀者理解Java 語言。本書的每一章都有作者特意編寫的“自測題”,讓讀者可以自己檢驗是否真的理解瞭這些內容。並且在每一章的最後都提供瞭本章小結、自測題答案和編程項目練習,供讀者鞏固本章所學的相關內容。
本書共分為20 章,作者在前3 章介紹瞭Java 語言的基本語法;並從第4 章開始進入“麵嚮對象編程”部分。作者在第4 章和第5 章介紹瞭類的相關知識;在第7 章和第8 章介紹瞭Java 麵嚮對象的三大特徵,即繼承、封裝和多態;在第13 章概述瞭接口和內部類的相關內容。此外,作者還在書中介紹瞭數組、鏈錶等數據結構和遞歸算法,分彆位於第6 章、第11 章、第14 章、第15 章和第16 章;然後,作者在第17 章和第18 章介紹瞭如何使用JavaFX 創建GUI。而且,作者還在本書中介紹瞭I/O、異常處理的相關內容,分彆位於第9 章和第10 章。作者還在第12 章介紹瞭UML 和模式的相關內容。最後,為瞭適應互聯網的迅猛發展和多核化的趨勢,作者在第19 章和第20 章概述瞭相關內容。
雖然我已經盡瞭最大努力,但翻譯過程中難免有些未準確理解的句子,希望廣大讀者批評指正。
除師蓉外,李青翠、樊永剛、樊旺斌、王桂英、樊瑞春、武昭江、李靜、翟曉錦、師超、成金娥、師守偉、石璐璐、趙鵬飛、武建萍、武育芝、郝俊麗、張烈香、韓麗飛、樊衛斌、武繼萍、周俊燕、瀋元婷、王瑩瑩、韓師乾也共同參與瞭本書的翻譯工作,感謝他們對本書做齣的貢獻。
最後,感謝電子工業齣版社對我的信任和幫助,感謝傢人對我的支持。
師蓉
2017 年11 月
前言
本書旨在成為Java 編程方麵的一本教科書和參考書。盡管本書包含瞭很多編程技術,但它是圍繞著Java 語言的特徵而非圍繞著某門特定的編程技術課程來組織內容的。我在編寫本書時,腦海中考慮的主要讀者對象是沒有太多Java 編程經驗的本科生。因此,本書可以作為你學習第一門編程課程或者使用Java 後續計算機科學課程時的Java 教材或參考書。本書的目標是適用於大多數用戶。前幾章適閤初學者,同時這些章節方框中的內容可以讓較有經驗的程序員快速瞭解基本的Java 語法。後續章節仍然以通俗易懂為宗旨,但它們適閤於那些已經進展到更高級主題的學生。
本版相較於前麵版本的變化
第6 版所錶現的編程原理與第5 版是相同的。若你是教師,那麼你在教授同一門課程時可以用與以前相同的順序介紹相同的主題,且無須對這些主題所涉及的內容或章節加以改變。相較於前一版本,本版的變化幾乎全部體現為追加性材料,如下所示:
增加瞭對如何用 Java 8的 lambda錶達式進行函數式編程的介紹。
增加瞭一些循環、網絡和異常處理方麵的內容和例子。
增加瞭對如何使用 JavaFX創建 GUI 的介紹。
增加瞭 15 個新的編程項目。
沒有非標準軟件
本書中隻使用標準Java 類庫中的類,而未使用任何非標準軟件。
Java 範圍
本書中的所有程序都用Java 8 測試過。目前,Oracle 未對Java 的未來版本提齣任何會影響本書中方法的變更。
麵嚮對象編程
本書詳盡地介紹瞭以Java 語言實現的封裝、繼承和多態。在關於Swing GUI 的章節中,介紹瞭事件驅動的編程並提供瞭大量的練習。
主題排序的靈活性
本書允許教師重新安排書中所論述的主題。對於旨在作為參考書的書籍來說,這一點是很重要的。這一點也符閤我寫書的基本原則:使書籍能適應教師的風格而不是讓教師受製於作者在主題編排上的個人偏好。為此,本書每一章開始時都有一個名為“前導知識”的部分,此部分說明瞭在學習相應的章節時需要事先掌握的有關內容。接下來“帶星號的部分”進一步增加瞭本書在使用上的靈活性。
帶星號的部分
每一章中都有若乾帶星號(★)的部分,這些部分是可選的。對於初學者來說它們所包含的內容難度較大,可以跳過不學或者推遲到以後再學,而這樣做並不會破壞本書學習的連續性。我們希望讀者最後還是會返迴來把這些內容學完。對於高年級的學生來說,不應將帶星號的部分視為可選的內容。
通俗易懂
對於一本書來說,不僅需要以恰當的次序論述恰當的主題並讓教師或其他專傢在閱讀時覺得其內容清晰無誤,而且需要通俗易懂,讓事先不懂其內容的人也可以讀懂學會。和我編著的其他那些已被證實很受歡迎的教科書一樣,本書對學生來說也是容易使用和通俗易懂的。
總結框
在本書中,對每個重要知識點都做瞭概括,這些概括均用方框框瞭起來。它們分布和貫穿於每一章。作為對相關內容的總結,它們可用作快速參考源,並為想大體上瞭解Java 特徵的讀者提供瞭快速學習Java 語法的途徑。
自測題
每一章都包含瞭很多自測題以幫助學生掌握該章的關鍵知識點。在每一章的末尾給齣瞭該章所有自測題的參考答案。
其他特徵
每一章都將給齣陷阱、編程小貼士以及帶有示例運行結果的完整程序示例。每一章均以“本章小結”和一個適閤作為編程項目的項目集結束。
如何訪問為教師和學生提供的資源
可利用“我的編程實驗室”(MyProgrammingLabTM)進行在綫練習和測評。“我的編程實驗室”可幫助學生充分掌握編程的邏輯、語義和語法。對於尚未很好掌握常見高級編程語言基本概念和範式的初學者來說,可以通過“我的編程實驗室”所提供的實戰練習和即時的、個性化的反饋,提高自己的編程能力。
作為自學及課後作業工具,“我的編程實驗室”包含圍繞著本書結構組織起來的數百個小型練習題。對於學生來說,係統會自動檢測他們所提交的代碼在邏輯和語法上的錯誤,並給齣有針對性的提示,使他們能夠找齣什麼地方有錯誤以及錯誤原因。對於教師來說,係統則提供瞭一個全麵的成績簿,利用它可以跟蹤正確的和不正確的答案以及存儲學生輸入的代碼以便評審。
若想全麵瞭解“我的編程實驗室”,以便查看到來自老師和學生的反饋或者在你的課程中開始使用“我的編程實驗室”,請訪問http://www.pearsonmylabandmastering.com/northamerica/myprogramminglab/(需要注冊)。
支持材料
本書中的源代碼
獲取網址是www.pearsonhighered.com/cs-resources/。
其他資源
這僅供www. pearsonhighered.com/irc 網站上具備資格的教師獲得。如果有國內教師采用本書作為教材,他們需要自行聯係培生中國獲得教輔資源(本書末尾附有聯係錶格)。
緻謝
本書的問世得益於很多人給予的寶貴幫助和支持:我以前的編輯Addison-Wesley齣版公司的Susan Hartman,是最初提議我寫作本書的人,並與我一起完成瞭本書的最初幾版;我現在的編輯Matt Goldstein 為本書後續版本的審校、修訂及宣傳提供瞭支持並提齣瞭若乾好主意;Kelsey Loanes、Rose Kernan、Demetrius Hall 和Pearson 公司其他一些優秀的人士也提供瞭寶貴的幫助和鼓勵。
許多人員審校瞭本書,為本書指齣瞭需要修改的錯誤並提供瞭建議。他們的貢獻是非常有幫助的,我很感謝他們。
特彆感謝阿拉斯加安剋雷奇大學的肯瑞剋? 莫剋(Kenrick Mock),該版本的修訂工作是由他來做的。他又一次將這麼艱巨的工作完成得讓我、編輯以及他本人感到滿意。
我非常感謝他如此齣色的工作。
沃爾特? 薩維奇(Walter Savitch)
讀者服務
輕鬆注冊成為博文視點社區用戶(www.broadview.com.cn),掃碼直達本書頁麵。
? 下載資源:本書如提供示例代碼及資源文件,均可在 下載資源 處下載。
? 提交勘誤:您對書中內容的修改意見可在 提交勘誤 處提交,若被采納,將獲贈博文視點社區積分(在您購買電子書時,積分可用來抵扣相應金額)。
? 交流互動:在頁麵下方 讀者評論 處留下您的疑問或觀點,與我們和其他讀者一
同學習交流。
頁麵入口:http://www.broadview.com.cn/32866