Java程序設(shè)計(jì)與問(wèn)題求解(原書第8版)
定 價(jià):139 元
叢書名:計(jì)算機(jī)科學(xué)叢書
- 作者:
- 出版時(shí)間:2019/3/1
- ISBN:9787111620976
- 出 版 社:機(jī)械工業(yè)出版社
- 中圖法分類:TP312.8
- 頁(yè)碼:0
- 紙張:
- 版次:
- 開(kāi)本:16開(kāi)
本書不僅介紹Java語(yǔ)言的基礎(chǔ)語(yǔ)法知識(shí),還通過(guò)大量案例研究、編程示例,著重講授問(wèn)題求解和編程技術(shù),如程序控制流(分支和循環(huán))、定義類與方法、異常處理等。
出版者的話
譯者序
前言
致謝
依賴關(guān)系圖
第1章 計(jì)算機(jī)與Java引論 1
1.1 計(jì)算機(jī)基礎(chǔ) 1
1.1.1 硬件與內(nèi)存 2
1.1.2 程序 3
1.1.3 編程語(yǔ)言、編譯器和解釋器 4
1.1.4 Java字節(jié)碼 5
1.1.5 類加載器 7
1.2 淺嘗Java 8
1.2.1 Java語(yǔ)言的歷史 8
1.2.2 應(yīng)用程序與小應(yīng)用程序 9
1.2.3 第一個(gè)Java應(yīng)用程序 9
1.2.4 編寫、編譯和運(yùn)行Java程序 13
1.3 編程基礎(chǔ) 14
1.3.1 面向?qū)ο缶幊? 14
1.3.2 算法 17
1.3.3 測(cè)試與調(diào)試 18
1.3.4 軟件復(fù)用 19
1.4 圖形化編程補(bǔ)充讀物 20
1.4.1 一個(gè)JavaFX應(yīng)用程序樣例 21
1.4.2 圖形的尺寸和位置 23
1.4.3 繪制橢圓和圓 24
1.4.4 繪制弧 25
本章小結(jié) 27
練習(xí) 28
實(shí)踐程序 29
編程項(xiàng)目 29
自測(cè)問(wèn)題答案 30
第2章 基本的計(jì)算 33
2.1 變量和表達(dá)式 33
2.1.1 變量 33
2.1.2 數(shù)據(jù)類型 35
2.1.3 Java標(biāo)識(shí)符 37
2.1.4 賦值語(yǔ)句 38
2.1.5 簡(jiǎn)單輸入 40
2.1.6 簡(jiǎn)單屏幕輸出 41
2.1.7 常量 42
2.1.8 具名常量 43
2.1.9 賦值兼容性 44
2.1.10 類型強(qiáng)制轉(zhuǎn)換 45
2.1.11 算術(shù)運(yùn)算 48
2.1.12 括號(hào)和優(yōu)先級(jí)規(guī)則 50
2.1.13 特殊賦值操作符 51
2.1.14 案例研究:售貨機(jī)找零 52
2.1.15 遞增和遞減操作符 56
2.1.16 更多有關(guān)遞增和遞減操作符的討論 57
2.2 String類 57
2.2.1 字符串常量和變量 58
2.2.2 字符串連接 58
2.2.3 字符串方法 59
2.2.4 字符串處理 62
2.2.5 轉(zhuǎn)義字符 63
2.2.6 Unicode字符集 64
2.3 鍵盤和屏幕I/O 65
2.3.1 屏幕輸出 65
2.3.2 鍵盤輸入 67
2.3.3 其他輸入界定符(選修) 72
2.3.4 使用printf的格式化輸出(選修) 73
2.4 文檔和樣式 75
2.4.1 有意義的變量名 75
2.4.2 注釋 75
2.4.3 縮進(jìn) 77
2.4.4 使用具名常量 78
2.5 圖形化編程補(bǔ)充讀物 80
2.5.1 將樣式規(guī)則應(yīng)用于JavaFX應(yīng)用程序 80
2.5.2 介紹JOptionPane類 81
2.5.3 將輸入作為其他數(shù)字類型讀取 87
2.5.4 編程示例:具有窗口化I/O的找零程序 88
本章小結(jié) 90
練習(xí) 90
實(shí)踐程序 92
編程項(xiàng)目 93
自測(cè)問(wèn)題答案 94
第3章 流控制—分支 98
3.1 if-else語(yǔ)句 98
3.1.1 基本的if-else語(yǔ)句 98
3.1.2 布爾表達(dá)式 104
3.1.3 比較字符串 107
3.1.4 嵌套的if-else語(yǔ)句 111
3.1.5 多重分支的if-else語(yǔ)句 112
3.1.6 編程示例:給出字母等第 114
3.1.7 案例研究:體重指數(shù) 116
3.1.8 條件操作符(選修) 118
3.1.9 exit方法 119
3.2 boolean類型 120
3.2.1 布爾變量 120
3.2.2 優(yōu)先級(jí)規(guī)則 121
3.2.3 布爾值的輸入和輸出 123
3.3 switch語(yǔ)句 124
3.4 圖形化編程補(bǔ)充讀物 130
3.4.1 指定繪圖顏色 131
3.4.2 Yes或No問(wèn)題的對(duì)話框 134
本章小結(jié) 135
練習(xí) 136
實(shí)踐程序 137
編程項(xiàng)目 138
自測(cè)問(wèn)題答案 140
第4章 流控制—循環(huán) 142
4.1 Java循環(huán)語(yǔ)句 142
4.1.1 while語(yǔ)句 143
4.1.2 do-while語(yǔ)句 146
4.1.3 編程示例:臭蟲侵?jǐn)_ 149
4.1.4 編程示例:嵌套循環(huán) 154
4.1.5 for語(yǔ)句 155
4.1.6 在for語(yǔ)句中聲明變量 160
4.1.7 在for語(yǔ)句中使用逗號(hào)(選修) 160
4.1.8 for-each語(yǔ)句 162
4.2 用循環(huán)編程 162
4.2.1 循環(huán)體 162
4.2.2 初始化語(yǔ)句 163
4.2.3 控制循環(huán)迭代次數(shù) 164
4.2.4 案例研究:使用布爾變量來(lái)終止循環(huán) 166
4.2.5 編程示例:消費(fèi)熱潮 168
4.2.6 循環(huán)中的break語(yǔ)句和continue語(yǔ)句(選修) 170
4.2.7 循環(huán)缺陷 172
4.2.8 跟蹤變量 174
4.2.9 斷言檢查 175
4.3 圖形化編程補(bǔ)充讀物 177
4.3.1 編程示例:一個(gè)包含多張臉的JavaFX應(yīng)用程序 177
4.3.2 繪制文本 181
本章小結(jié) 182
練習(xí) 182
實(shí)踐程序 184
編程項(xiàng)目 185
自測(cè)問(wèn)題答案 188
第5章 定義類和方法 193
5.1 類和方法定義 193
5.1.1 類文件和單獨(dú)編譯 195
5.1.2 編程示例:實(shí)現(xiàn)Dog類 195
5.1.3 實(shí)例變量 196
5.1.4 方法 198
5.1.5 定義void方法 200
5.1.6 定義有返回值的方法 201
5.1.7 編程示例:實(shí)現(xiàn)Species類的第一次嘗試 205
5.1.8 關(guān)鍵詞this 208
5.1.9 局部變量 209
5.1.10 塊 211
5.1.11 基本類型參數(shù) 212
5.2 信息隱藏和封裝 216
5.2.1 信息隱藏 217
5.2.2 前置條件和后置條件注釋 217
5.2.3 public和private修飾符 218
5.2.4 編程示例:為什么實(shí)例變量應(yīng)該是私有的 220
5.2.5 編程示例:矩形類的另一種實(shí)現(xiàn) 221
5.2.6 訪問(wèn)器方法和修改器方法 223
5.2.7 編程示例:Purchase類 225
5.2.8 調(diào)用方法的方法 228
5.2.9 封裝 233
5.2.10 使用javadoc自動(dòng)歸檔 235
5.2.11 UML類圖 235
5.3 對(duì)象和引用 236
5.3.1 類類型變量 237
5.3.2 定義類的equals方法 242
5.3.3 編程示例:Species類 244
5.3.4 布爾值方法 246
5.3.5 案例研究:?jiǎn)卧獪y(cè)試 247
5.3.6 類類型參數(shù) 249
5.3.7 編程示例:類類型參數(shù)與基本類型參數(shù) 252
5.4 圖形化編程補(bǔ)充讀物 255
5.4.1 GraphicsContext類 255
5.4.2 編程示例:用輔助方法繪制多張臉 257
5.4.3 向JavaFX應(yīng)用程序添加標(biāo)簽 260
本章小結(jié) 261
練習(xí) 262
實(shí)踐程序 264
編程項(xiàng)目 265
自測(cè)問(wèn)題答案 269
第6章 對(duì)象和方法進(jìn)階 274
6.1 構(gòu)造器 275
6.1.1 定義構(gòu)造器 275
6.1.2 在構(gòu)造器中調(diào)用方法 281
6.1.3 在構(gòu)造器中調(diào)用其他構(gòu)造器(選修) 284
6.2 靜態(tài)變量和靜態(tài)方法 285
6.2.1 靜態(tài)變量 285
6.2.2 靜態(tài)方法 286
6.2.3 將main方法中的任務(wù)劃分為子任務(wù) 291
6.2.4 在類中添加main方法 293
6.2.5 Math類 294
6.2.6 包裝器類 296
6.3 編寫方法 300
6.3.1 案例研究:格式化輸出 300
6.3.2 分解 305
6.3.3 解決編譯器問(wèn)題 305
6.3.4 測(cè)試方法 307
6.4 重載 309
6.4.1 重載基礎(chǔ)知識(shí) 309
6.4.2 重載和自動(dòng)類型轉(zhuǎn)換 311
6.4.3 重載和返回類型 313
6.4.4 編程示例:Money類 315
6.5 再探信息隱藏 320
6.6 作為類的枚舉 323
6.7 包 325
6.7.1 包和導(dǎo)入機(jī)制 325
6.7.2 包名和目錄 326
6.7.3 名字沖突 328
6.8 圖形化編程補(bǔ)充讀物 329
6.8.1 添加按鈕 329
6.8.2 添加圖標(biāo) 330
本章小結(jié) 332
練習(xí) 332
實(shí)踐程序 334
編程項(xiàng)目 335
自測(cè)問(wèn)題答案 338
第7章 數(shù)組 343
7.1 數(shù)組基礎(chǔ) 344
7.1.1 創(chuàng)建和訪問(wèn)數(shù)組 344
7.1.2 數(shù)組詳情 346
7.1.3 實(shí)例變量length 349
7.1.4 進(jìn)一步了解數(shù)組索引 351
7.1.5 初始化數(shù)組 354
7.2 類和方法中的數(shù)組 355
7.2.1 案例研究:銷售報(bào)表 355
7.2.2 索引變量作為方法引元 362
7.2.3 整個(gè)數(shù)組作為方法引元 363
7.2.4 main方法的引元 365
7.2.5 數(shù)組賦值和判等 365
7.2.6 返回?cái)?shù)組的方法 368
7.3 用數(shù)組和類編程 371
7.3.1 編程示例:專用列表類 371
7.3.2 部分填充的數(shù)組 377
7.4 數(shù)組排序和搜索 378
7.4.1 選擇排序 378
7.4.2 其他排序算法 382
7.4.3 在數(shù)組中搜索 383
7.5 多維數(shù)組 383
7.5.1 多維數(shù)組基礎(chǔ)知識(shí) 384
7.5.2 多維數(shù)組作為參數(shù)和返回值 386
7.5.3 多維數(shù)組的Java表示形式 388
7.5.4 參差數(shù)組(選修) 389
7.5.5 編程示例:工時(shí)記錄 390
7.6 圖形化編程補(bǔ)充讀物 395
7.6.1 布局面板 395
7.6.2 文本域、文本框和組合布局 401
7.6.3 繪制多邊形 404
本章小結(jié) 407
練習(xí) 407
實(shí)踐程序 411
編程項(xiàng)目 412
自測(cè)問(wèn)題答案 416
第8章 繼承、多態(tài)和接口 422
8.1 繼承基礎(chǔ) 422
8.1.1 派生類 423
8.1.2 覆蓋方法定義 426
8.1.3 覆蓋與重載 427
8.1.4 final修飾符 427
8.1.5 基類的私有實(shí)例變量與私有方法 428
8.1.6 UML繼承圖 429
8.2 運(yùn)用繼承編程 431
8.2.1 派生類中的構(gòu)造器 431
8.2.2 再論this方法 432
8.2.3 調(diào)用被覆蓋的方法 433
8.2.4 編程示例:派生類的派生類 434
8.2.5 在Undergraduate中定義equals方法的另一種方式 437
8.2.6 類型兼容性 437
8.2.7 Object類 441
8.2.8 更好的equals方法 442
8.3 多態(tài) 444
8.3.1 動(dòng)態(tài)綁定和繼承 444
8.3.2 動(dòng)態(tài)綁定toString 447
8.4 接口與抽象類 448
8.4.1 類接口 448
8.4.2 Java接口 449
8.4.3 實(shí)現(xiàn)接口 450
8.4.4 作為類型的接口 452
8.4.5 擴(kuò)展接口 454
8.4.6 案例研究:字符圖形 455
8.4.7 案例研究:Comparable接口 464
8.4.8 抽象類 468
8.5 圖形化編程補(bǔ)充讀物 469
8.5.1 事件驅(qū)動(dòng)編程 470
8.5.2 在單獨(dú)的類中處理事件 471
8.5.3 在主GUI應(yīng)用類中處理事件 473
8.5.4 在匿名內(nèi)部類中處理事件 475
8.5.5 編程示例:添加數(shù)字 477
本章小結(jié) 479
練習(xí) 479
實(shí)踐程序 480
編程項(xiàng)目 481
自測(cè)問(wèn)題答案 483
第9章 異常處理 486
9.1 基本的異常處理 486
9.1.1 Java中的異常 487
9.1.2 預(yù)定義的異常類 495
9.2 定義自己的異常類 496
9.3 更多有關(guān)異常類的知識(shí) 503
9.3.1 聲明異常(傳遞責(zé)任) 504
9.3.2 異常的種類 506
9.3.3 錯(cuò)誤 507
9.3.4 多個(gè)拋出和捕獲 508
9.3.5 finally塊 513
9.3.6 重新拋出異常(選修) 513
9.3.7 案例研究:面向命令行的計(jì)算器 514
9.4 圖形化編程補(bǔ)充讀物 523
9.4.1 更多的用戶界面控件和形狀 523
9.4.2 圖像和形狀 526
9.4.3 處理鼠標(biāo)事件 527
9.4.4 Timeline類 530
本章小結(jié) 532
練習(xí) 533
實(shí)踐程序 534
編程項(xiàng)目 536
自測(cè)問(wèn)題答案 538
第10章 流、文件I/O和網(wǎng)絡(luò) 542
10.1 流和文件I/O概覽 542
10.1.1 流的概念 543
10.1.2 為什么用文件來(lái)進(jìn)行輸入/輸出 543
10.1.3 文本文件和二進(jìn)制文件 543
10.2 文本文件I/O 545
10.2.1 創(chuàng)建文本文件 545
10.2.2 在文本文件中追加內(nèi)容 550
10.2.3 從文本文件中讀取內(nèi)容 551
10.3 適用于所有文件的技術(shù) 553
10.3.1 File類 553
10.3.2 編程示例:從鍵盤讀取文件名 554
10.3.3 使用路徑名 555
10.3.4 File類的方法 556
10.3.5 定義方法來(lái)打開(kāi)流 558
10.3.6 案例研究:處理由逗號(hào)分隔的數(shù)值文件 559
10.4 基本的二進(jìn)制文件I/O 561
10.4.1 創(chuàng)建二進(jìn)制文件 561
10.4.2 向二進(jìn)制文件中寫入基本類型值 563
10.4.3 向二進(jìn)制文件中寫入字符串 565
10.4.4 有關(guān)writeUTF的一些細(xì)節(jié) 566
10.4.5 從二進(jìn)制文件中讀取內(nèi)容 566
10.4.6 EOFException類 570
10.4.7 編程示例:處理二進(jìn)制數(shù)據(jù)文件 572
10.5 包含對(duì)象和數(shù)組的二進(jìn)制文件I/O 576
10.5.1 包含類的對(duì)象的二進(jìn)制文件I/O 576
10.5.2 序列化的一些細(xì)節(jié) 579
10.5.3 二進(jìn)制文件中的數(shù)組對(duì)象 580
10.6 使用流的網(wǎng)絡(luò)通信 582
10.7 圖形化編程補(bǔ)充讀物 586
本章小結(jié) 591
練習(xí) 591
實(shí)踐程序 593
編程項(xiàng)目 594
自測(cè)問(wèn)題答案 597
第11章 遞歸 601
11.1 遞歸基礎(chǔ) 601
11.1.1 案例研究:數(shù)字位顯示成單詞 603
11.1.2 遞歸如何工作 607
11.1.3 無(wú)限遞歸 610
11.1.4 遞歸方法與迭代方法 612
11.1.5 有返回值的遞歸方法 614
11.2 運(yùn)用遞歸編程 617
11.2.1 編程示例:要求用戶輸入必須正確 617
11.2.2 案例研究:二分搜索 618
11.2.3 編程示例:歸并排序—一種遞歸排序方法 624
11.3 圖形化編程補(bǔ)充讀物 627
本章小結(jié) 630
練習(xí) 630
實(shí)踐程序 632
編程項(xiàng)目 632
自測(cè)問(wèn)題答案 636
第12章 動(dòng)態(tài)數(shù)據(jù)結(jié)構(gòu)和泛型 639
12.1 基于數(shù)組的數(shù)據(jù)結(jié)構(gòu) 640
12.1.1 ArrayList類 640
12.1.2 創(chuàng)建ArrayList的實(shí)例 641
12.1.3 使用ArrayList的方法 642
12.1.4 編程示例:待辦事項(xiàng)列表 645
12.1.5 參數(shù)化類和泛化數(shù)據(jù)類型 647
12.2 Java集合框架 648
12.2.1 Collection接口 648
12.2.2 HashSet類 649
12.2.3 Map接口 650
12.2.4 HashMap類 650
12.3 鏈?zhǔn)綌?shù)據(jù)結(jié)構(gòu) 653
12.3.1 LinkedList類 653
12.3.2 鏈表 653
12.3.3 實(shí)現(xiàn)鏈表的操作 655
12.3.4 隱私泄露 660
12.3.5 內(nèi)部類 661
12.3.6 節(jié)點(diǎn)內(nèi)部類 662
12.3.7 迭代器 662
12.3.8 Java的Iterator接口 670
12.3.9 鏈表的異常處理 671
12.3.10 鏈表的變體 673
12.3.11 其他鏈?zhǔn)綌?shù)據(jù)結(jié)構(gòu) 675
12.4 泛型 675
12.4.1 基礎(chǔ)知識(shí) 675
12.4.2 編程示例:一個(gè)泛化的鏈表 678
12.5 圖形化編程補(bǔ)充讀物 682
12.5.1 用場(chǎng)景構(gòu)建器構(gòu)建JavaFX應(yīng)用程序 682
12.5.2 何去何從 686
本章小結(jié) 686
練習(xí) 687
實(shí)踐程序 689
編程項(xiàng)目 690
自測(cè)問(wèn)題答案 693
附錄A 獲取Java 696
附錄B 運(yùn)行Applet 697
附錄C protected和包修飾符 698
附錄D DecimalFormat類 699
附錄E javadoc 702
附錄F C++和Java之間的區(qū)別 704
附錄G Unicode字符編碼 707
附錄H Java 8函數(shù)式編程簡(jiǎn)介 708
附錄I ??Iterator接口 712
附錄J 克隆 713
附錄K Java保留關(guān)鍵詞 716
索引一