齣版者的話
中文版序
譯者序
前言
第1章計算機、程序和Java概述1
1.1引言1
1.2什麼是計算機2
1.2.1中央處理器2
1.2.2比特和字節3
1.2.3內存3
1.2.4存儲設備4
1.2.5輸入和輸齣設備4
1.2.6通信設備5
1.3編程語言6
1.3.1機器語言6
1.3.2匯編語言6
1.3.3高級語言7
1.4操作係統8
1.4.1控製和監視係統的活動8
1.4.2分配和調配係統資源8
1.4.3調度操作8
1.5Java、萬維網以及其他9
1.6Java語言規範、API、JDK和IDE10
1.7一個簡單的Java程序11
1.8創建、編譯和執行Java程序13
1.9程序設計風格和文檔16
1.9.1正確的注釋和注釋風格16
1.9.2正確的縮進和空白16
1.9.3塊的風格17
1.10程序設計錯誤17
1.10.1語法錯誤17
1.10.2運行時錯誤18
1.10.3邏輯錯誤18
1.10.4常見錯誤19
1.11使用NetBeans開發Java程序20
1.11.1創建Java工程20
1.11.2創建Java類21
1.11.3編譯和運行類22
1.12使用Eclipse開發Java程序22
1.12.1創建Java工程22
1.12.2創建Java類24
1.12.3編譯和運行類24
關鍵術語25
本章小結25
測試題26
編程練習題26
第2章基本程序設計28
2.1引言28
2.2編寫簡單的程序28
2.3從控製颱讀取輸入31
2.4標識符34
2.5變量34
2.6賦值語句和賦值錶達式36
2.7命名常量37
2.8命名習慣37
2.9數值數據類型和操作38
2.9.1數值類型38
2.9.2從鍵盤讀取數值39
2.9.3數值操作符39
2.9.4冪運算41
2.10數值型直接量41
2.10.1整型直接量42
2.10.2浮點型直接量42
2.10.3科學記數法42
2.11錶達式求值以及操作符優先級43
2.12示例學習:顯示當前時間44
2.13增強賦值操作符46
2.14自增和自減操作符47
2.15數值類型轉換48
2.16軟件開發過程50
2.17示例學習:整錢兌零54
2.18常見錯誤和陷阱56
關鍵術語58
本章小結58
測試題59
編程練習題59
第3章選擇64
3.1引言64
3.2boolean數據類型64
3.3if語句66
3.4雙分支if—else語句68
3.5嵌套的if語句和多分支if—else語句69
3.6常見錯誤和陷阱71
3.7産生隨機數74
3.8示例學習:計算身體質量指數76
3.9示例學習:計算稅率77
3.10邏輯操作符80
3.11示例學習:判定閏年83
3.12示例學習:彩票84
3.13switch語句85
3.14條件錶達式88
3.15操作符的優先級和結閤規則89
3.16調試90
關鍵術語91
本章小結91
測試題92
編程練習題92
第4章數學函數、字符和字符串100
4.1引言100
4.2常用數學函數101
4.2.1三角函數方法101
4.2.2指數函數方法102
4.2.3取整方法102
4.2.4min、max和abs方法102
4.2.5random方法103
4.2.6示例學習:計算三角形的角度103
4.3字符數據類型和操作105
4.3.1Unicode和ASCII碼105
4.3.2特殊字符的轉義序列106
4.3.3字符型數據與數值型數據之間的轉換107
4.3.4字符的比較和測試107
4.4String類型109
4.4.1求字符串長度110
4.4.2從字符串中獲取字符110
4.4.3連接字符串111
4.4.4字符串的轉換111
4.4.5從控製颱讀取字符串112
4.4.6從控製颱讀取字符112
4.4.7字符串比較112
4.4.8獲得子字符串114
4.4.9獲取字符串中的字符或者子串115
4.4.10字符串和數字間的轉換116
4.5示例學習117
4.5.1猜測生日118
4.5.2將十六進製數轉換為十進製數121
4.5.3使用字符串修改彩票程序122
4.6格式化控製颱輸齣123
關鍵術語126
本章小結127
測試題127
編程練習題127
第5章循環133
5.1引言133
5.2while循環134
5.2.1示例學習:猜數字136
5.2.2循環設計策略138
5.2.3示例學習:多個減法測試題138
5.2.4使用標記值控製循環140
5.2.5輸入和輸齣重定嚮141
5.3do—while循環143
5.4for循環144
5.5采用哪種循環147
5.6嵌套循環149
5.7最小化數值錯誤151
5.8示例學習152
5.8.1求最大公約數152
5.8.2預測未來學費154
5.8.3將十進製數轉換為
十六進製數155
5.9關鍵字break和continue156
5.10示例學習:判斷迴文串159
5.11示例學習:顯示素數160
關鍵術語162
本章小結163
測試題163
編程練習題163
第6章方法171
6.1引言171
6.2定義方法172
6.3調用方法173
6.4void方法示例175
6.5通過傳值進行參數傳遞178
6.6模塊化代碼181
6.7示例學習:將十六進製數轉換為十進製數183
6.8重載方法185
6.9變量的作用域187
6.10示例學習:生成隨機字符188
6.11方法抽象和逐步求精190
6.11.1自頂嚮下的設計191
6.11.2自頂嚮下和自底嚮上的實現192
6.11.3實現細節193
6.11.4逐步求精的優勢196
關鍵術語196
本章小結197
測試題197
編程練習題197
第7章一維數組207
7.1引言207
7.2數組的基礎知識207
7.2.1聲明數組變量208
7.2.2創建數組208
7.2.3數組大小和默認值209
7.2.4訪問數組元素209
7.2.5數組初始化語法210
7.2.6處理數組210
7.2.7foreach循環212
7.3示例學習:分析數字214
7.4示例學習:一副牌215
7.5數組的復製217
7.6將數組傳遞給方法218
7.7從方法中返迴數組221
7.8示例學習:統計每個字母齣現的次數221
7.9可變長參數列錶224
7.10數組的查找225
7.10.1綫性查找法225
7.10.2二分查找法226
7.11數組的排序228
7.12Arrays類230
7.13命令行參數232
7.13.1嚮main方法傳遞字符串232
7.13.2示例學習:計算器232
關鍵術語234
本章小結235
測試題235
編程練習題235
第8章多維數組242
8.1引言242
8.2二維數組的基礎知識242
8.2.1聲明二維數組變量並創建二維數組243
8.2.2獲取二維數組的長度244
8.2.3鋸齒數組244
8.3處理二維數組245
8.4將二維數組傳遞給方法247
8.5示例學習:多選題測驗評分248
8.6示例學習:找齣距離最近的點對249
8.7示例學習:數獨251
8.8多維數組254
8.8.1示例學習:每日溫度和濕度255
8.8.2示例學習:猜生日256
本章小結258
測試題258
編程練習題258
第9章對象和類270
9.1引言270
9.2為對象定義類270
9.3示例:定義類和創建對象272
9.4使用構造方法構造對象277
9.5通過引用變量訪問對象278
9.5.1引用變量和引用類型278
9.5.2訪問對象的數據和方法279
9.5.3引用數據域和null值279
9.5.4基本類型變量和引用類型變量的區彆280
9.6使用Java庫中的類282
9.6.1Date類282
9.6.2Random類283
9.6.3Point2D類283
9.7靜態變量、常量和方法284
9.8可見性修飾符289
9.9數據域封裝291
9.10嚮方法傳遞對象參數294
9.11對象數組297
9.12不可變對象和類299
9.13變量的作用域301
9.14this引用302
9.14.1使用this引用隱藏數據域302
9.14.2使用this調用構造方法303
關鍵術語304
本章小結304
測試題305
編程練習題305
第10章麵嚮對象思考309
10.1引言309
10.2類的抽象和封裝309
10.3麵嚮對象的思考313
10.4類的關係315
10.4.1關聯316
10.4.2聚集和組閤317
10.5示例學習:設計Course類318
10.6示例學習:設計棧類320
10.7將基本數據類型值作為對象處理322
10.8基本類型和包裝類類型之間的自動轉換325
10.9BigInteger和BigDecimal類326
10.10String類327
10.10.1構造字符串327
10.10.2不可變字符串與限定字符串328
10.10.3字符串的替換和分隔329
10.10.4依照模式匹配、替換和分隔329
10.10.5字符串與數組之間的轉換330
10.10.6將字符和數值轉換成字符串331
10.10.7格式化字符串331
10.11StringBuilder和StringBuffer類333
10.11.1修改StringBuilder中的字符串334
10.11.2toString、capacity、length、setLength和charAt方法335
10.11.3示例學習:判斷迴文串時忽略既非字母又非數字的字符336
關鍵術語338
本章小結339
測試題339
編程練習題339
第11章繼承和多態347
11.1引言347
11.2父類和子類347
11.3使用super關鍵字353
11.3.1調用父類的構造方法353
11.3.2構造方法鏈354
11.3.3調用父類的方法355
11.4方法重寫356
11.5方法重寫與重載357
11.6Object類及其toString()方法359
11.7多態359
11.8動態綁定360
11.9對象轉換和instanceof運算符363
11.10Object類的equals方法367
11.11ArrayList類368
11.12對於列錶有用的方法374
11.13示例學習:自定義棧類374
11.14protected數據和方法376
11.15防止擴展和重寫378
關鍵術語378
本章小結379
測試題379
編程練習題380
第12章異常處理和文本I/O384
12.1引言384
12.2異常處理概述385
12.3異常類型389
12.4關於異常處理的更多知識391
12.4.1聲明異常392
12.4.2拋齣異常392
12.4.3捕獲異常393
12.4.4從異常中獲取信息394
12.4.5示例學習:聲明、拋齣和捕獲異常396
12.5finally子句399
12.6何時使用異常400
12.7重新拋齣異常401
12.8鏈式異常402
12.9創建自定義異常類403
12.10File類405
12.11文件輸入和輸齣408
12.11.1使用PrintWriter寫數據408
12.11.2使用try—with—resources自動關閉資源409
12.11.3使用Scanner讀數據410
12.11.4Scanner如何工作411
12.11.5示例學習:替換文本412
12.12從Web上讀取數據414
12.13示例學習:Web爬蟲416
關鍵術語418
本章小結418
測試題419
編程練習419
第13章抽象類和接口424
13.1引言424
13.2抽象類424
13.2.1為何要使用抽象方法427
13.2.2抽象類的幾點說明428
13.3示例學習:抽象的Number類429
13.4示例學習:Calendar和GregorianCalendar431
13.5接口434
13.6Comparable接口436
13.7Cloneable接口440
13.8接口與抽象類444
13.9示例學習:Rational類447
13.10類的設計原則452
13.10.1內聚性452
13.10.2一緻性452
13.10.3封裝性452
13.10.4清晰性453
13.10.5完整性453
13.10.6實例和靜態453
13.10.7繼承與聚閤454
13.10.8接口和抽象類454
關鍵術語454
本章小結455
測試題455
編程練習題455
第14章JavaFX基礎459
14.1引言459
14.2JavaFX與Swing以及AWT的比較459
14.3JavaFX程序的基本結構460
14.4麵闆、UI組件以及形狀462
14.5屬性綁定465
14.6節點的通用屬性和方法468
14.7Color類469
14.8Font類470
14.9Image和ImageView類472
14.10布局麵闆474
14.10.1FlowPane475
14.10.2GridPane477
14.10.3BorderPane478
14.10.4HBox和VBox480
14.11形狀482
14.11.1Text482
14.11.2Line484
14.11.3Rectangle485
14.11.4Circle和Ellipse487
14.11.5Arc488
14.11.6Polygon和Polyline491
14.12示例學習:ClockPane類493
關鍵術語497
本章小結498
測試題498
編程練習題498
第15章事件驅動編程和動畫504
15.1引言504
15.2事件和事件源506
15.3注冊處理器和處理事件507
15.4內部類511
15.5匿名內部類處理器512
15.6使用lambda錶達式簡化事件處理514
15.7示例學習:貸款計算器517
15.8鼠標事件519
15.9鍵盤事件520
15.10可觀察對象的監聽器523
15.11動畫525
15.11.1PathTransition525
15.11.2FadeTransition528
15.11.3Timeline530
15.12示例學習:彈球532
關鍵術語535
本章小結535
測試題536
編程練習題536
第16章JavaFXUI組件和多媒體542
16.1引言542
16.2Labeled和Label543
16.3按鈕545
16.4復選框547
16.5單選按鈕549
16.6文本域551
16.7文本區域553
16.8組閤框556
16.9列錶視圖559
16.10滾動條562
16.11滑動條564
16.12示例學習:開發一個井字遊戲567
16.13視頻和音頻572
16.14示例學習:國旗和國歌575
本章小結577
測試題578
編程練習題578
第17章二進製I/O584
17.1引言584
17.2在Java中如何處理文本I/O584
17.3文本I/O與二進製I/O585
17.4二進製I/O類587
17.4.1FileInputStream和FileOutputStream588
17.4.2FilterInputStream和FilterOutputStream590
17.4.3DataInputStream和DataOutputStream590
17.4.4BufferedInputStream和BufferedOutputStream594
17.5示例學習:復製文件596
17.6對象I/O598
17.6.1Serializable接口600
17.6.2序列化數組601
17.7隨機訪問文件602
關鍵術語606
本章小結606
測試題606
編程練習題606
第18章遞歸609
18.1引言609
18.2示例學習:計算階乘610
18.3示例學習:計算斐波那契數613
18.4使用遞歸解決問題615
18.5遞歸輔助方法617
18.5.1遞歸選擇排序618
18.5.2遞歸二分查找618
18.6示例學習:得到目錄的大小619
18.7示例學習:漢諾塔621
18.8示例學習:分形624
18.9遞歸與迭代627
18.10尾遞歸628
關鍵術語629
本章小結629
測試題630
編程練習題630
附錄AJava關鍵字637
附錄BASCII字符集638
附錄C操作符優先級錶639
附錄DJava修飾符640
附錄E特殊浮點值641
附錄F數係642
附錄G位操作646
附錄H正則錶達式647
附錄I枚舉類型651
· · · · · · (
收起)