內容簡介
本書側重於麵嚮對象設計,通過淺顯易懂的語言和代碼,很好地平衡瞭完整實例和解釋性討論,並圍繞著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
示例:一個銀行賬戶類
Absolute Java中文版(第6版)(雙色) 下載 mobi epub pdf txt 電子書 格式