內容簡介
本書是Java語言的經典教材,中文版分為基礎篇和進階篇,主要介紹程式設計基礎、面向對象程煉淋旬序設計、GUI程式設計、數據結構和算法、高級Java程滲頁整歸序設計等內容。本書以示例講解解決問題的技巧,提供大量的程式清單,每章配有大量複習題和編程練習題,幫助讀者掌握編程技格夜蜜地術,並套用所學技術解決實際套用開發中遇到的微想贈問題。基礎篇主要介紹基本程式設計、語法結構、面向對象程式設計、繼承和多態、異常處理和文本I/O、抽象類和接口等內容。
圖書目錄
目 錄
Introduction to Java Programming and Data Structures, Comprehensive Version, Eleventh Edition
出版者的話
中文版序
譯者序
前言
第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.5 Java、全球資訊網以及其他 9
1.6 Java語言規範、API、JDK、JRE和IDE 10
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 邏輯錯誤 19
1.10.4 常見錯誤 19
1.11 使用NetBeans開發Java程式 20
1.11.1 創建Java工程 21
1.11.2 創建謎茅元Java類 22
1.11.3 編譯和運行類 22
1.12 使用Eclipse開發Java程式 23
1.12.1 創建Java工程 23
1.12.2 創建Java類 24
1.12.3 編譯和運行類 24
關鍵術語 25
本章小結 26
測試題 27
編程練習題 27
第2章 基本程式設計 29
2.1 引言 29
2.2 編寫簡單的程式 29
2.3 從控制台讀取輸入 32
2.4 標識符 35
2.5 變數 35
2.6 賦值語句和賦值表達式 37
2.7 命名常量 38
2.8 命名習慣 39
2.9 數值數據類型和操作 39
2.9.1 數值類型 39
2.9.2 從鍵盤讀取數值 40
2.9.3 數值操作符 40
2.9.4 冪運算 42
2.10 數值型字面值 43
2.10.1 整型字面值 43
2.10.2 浮點型字面值 43
2.10.3 科學記數法 44
2.11 表達式求值以及操定遙作符優先權 44
2.12 示例學習:顯示當前時間 45
2.13 增強賦值操作符 47
2.14 自增和自減操作符 48
2.15 數值類型轉換 50
2.16 軟體開發過程 52
2.17 示例學習:整錢兌零 55
2.18 常見錯誤和陷阱 57
關鍵術語 59
本章小結 60
測試題 60
編程練習題 60
第3章 選擇 65
3.1 引言 65
3.2 boolean數據類型 65
3.3 if語句 67
3.4 雙分支if-else語句 69
3.5 嵌套的if語堡妹廈句和多分支if-else語句 70
3.6 常見錯誤和陷阱 72
3.7 產生隨機數 75
3.8 示例學習:計算身體質量指數 77
3.9 示例學習:計算稅率 78
3.10 邏輯操作符 81
3.11 示例學習:判定閏年 84
3.12 示例學習:彩票 85
3.13 switch語句 87
3.14 條件操作 90
3.15 操作符的優先權和結合規則 91
3.16 調試 92
關鍵術語 93
本章小結 93
測試題 94
編程練習題 94
第4章 數學函式、字元和字元串 102
4.1 引言 102
4.2 常用數學函式 103
4.2.1 三角函式方法 103
4.2.2 指數函式方法 103
4.2.3 取整方法 104
4.2.4 min、max和abs方法 104
4.2.5 random方法 105
4.2.6 示例學習:計算三角形的角度 105
4.3 字元數據類型和操作 107
4.3.1 Unicode和ASCII碼 107
4.3.2 特殊字元的轉義序列 108
4.3.3 字元型數據與數值型數據之間的轉換 108
4.3.4 字元的比較和測試 109
4.4 String類型 111
4.4.1 獲取字元串長度 112
4.4.2 從字元串中獲取字元 112
4.4.3 連線字元串 113
4.4.4 字元串的轉換 113
4.4.5 從控制台讀取字元串 114
4.4.6 從控制台讀取字元 114
4.4.7 字元串比較 115
4.4.8 獲得子字元串 116
4.4.9 獲取字元串中的字元或者子串 117
4.4.10 字元串和數字間的轉換 118
4.5 示例學習 120
4.5.1 猜測生日 120
4.5.2 將十六進制數轉換為十進制數 123
4.5.3 使用字元串修改彩票程式 124
4.6 格式化控制台輸出 126
關鍵術語 129
本章小結 129
測試題 130
編程練習題 130
第5章 循環 136
5.1 引言 136
5.2 while循環 137
5.3 示例學習:猜數字 139
5.4 循環設計策略 142
5.5 使用用戶確認或者標記值控制循環 144
5.6 do-while循環 146
5.7 for循環 148
5.8 採用哪種循環 151
5.9 嵌套循環 153
5.10 最小化數值錯誤 155
5.11 示例學習 156
5.11.1 求最大公約數 156
5.11.2 預測未來學費 158
5.11.3 將十進制數轉換為十六進制數 158
5.12 關鍵字break和continue 160
5.13 示例學習:判斷回文 163
5.14 示例學習:顯示素數 164
關鍵術語 167
本章小結 167
測試題 167
編程練習題 167
第6章 方法 176
6.1 引言 176
6.2 定義方法 177
6.3 調用方法 178
6.4 void方法與返回值方法 180
6.5 按值傳參 183
6.6 模組化代碼 186
6.7 示例學習:將十六進制數轉換為十進制數 188
6.8 重載方法 190
6.9 變數的作用域 192
6.10 示例學習:生成隨機字元 193
6.11 方法抽象和逐步求精 195
6.11.1 自頂向下的設計 196
6.11.2 自頂向下和自底向上的實現 197
6.11.3 實現細節 199
6.11.4 逐步求精的優勢 201
關鍵術語 202
本章小結 202
測試題 203
編程練習題 203
第7章 一維數組 212
7.1 引言 212
7.2 數組的基礎知識 212
7.2.1 聲明數組變數 213
7.2.2 創建數組 213
7.2.3 數組大小和默認值 214
7.2.4 訪問數組元素 214
7.2.5 數組初始化簡寫方式 215
7.2.6 處理數組 215
7.2.7 foreach循環 217
7.3 示例學習:分析數字 219
7.4 示例學習:一副牌 220
7.5 複製數組 222
7.6 將數組傳遞給方法 223
7.7 方法返回數組 226
7.8 示例學習:統計每個字母出現的次數 226
7.9 可變長參數列表 230
7.10 數組的查找 230
7.10.1 線性查找法 231
7.10.2 二分查找法 231
7.11 數組的排序 234
7.12 Arrays類 235
7.13 命令行參數 237
7.13.1 向main方法傳遞字元串 237
7.13.2 示例學習:計算器 238
關鍵術語 239
本章小結 240
測試題 240
編程練習題 240
第8章 多維數組 248
8.1 引言 248
8.2 二維數組基礎 248
8.2.1 聲明二維數組變數並創建二維數組 249
8.2.2 獲取二維數組的長度 250
8.2.3 不規則數組 250
8.3 處理二維數組 251
8.4 將二維數組傳遞給方法 253
8.5 示例學習:復選題測驗評分 254
8.6 示例學習:找出距離最近的點對 255
8.7 示例學習:數獨 257
8.8 多維數組 260
8.8.1 示例學習:每日溫度和濕度 261
8.8.2 示例學習:猜生日 263
本章小結 264
測試題 264
編程練習題 264
第9章 對象和類 276
9.1 引言 276
9.2 為對象定義類 277
9.3 示例:定義類和創建對象 278
9.4 使用構造方法構造對象 283
9.5 通過引用變數訪問對象 284
9.5.1 引用變數和引用類型 284
9.5.2 訪問對象的數據和方法 285
9.5.3 引用數據域和null值 285
9.5.4 基本類型變數和引用類型變數的區別 286
9.6 使用Java庫中的類 288
9.6.1 Date類 288
9.6.2 Random類 289
9.6.3 Point2D類 289
9.7 靜態變數、常量和方法 291
9.8 可見性修飾符 296
9.9 數據域封裝 297
9.10 向方法傳遞對象參數 300
9.11 對象數組 303
9.12 不可變對象和類 305
9.13 變數的作用域 307
9.14 this引用 308
9.14.1 使用this引用數據域 308
9.14.2 使用this調用構造方法 309
關鍵術語 310
本章小結 311
測試題 311
編程練習題 311
第10章 面向對象思考 316
10.1 引言 316
10.2 類的抽象和封裝 316
10.3 面向對象的思想 320
10.4 類的關係 322
10.4.1 關聯 323
10.4.2 聚集和組合 324
10.5 示例學習:設計Course類 325
10.6 示例學習:設計棧類 327
10.7 將基本數據類型值作為對象處理 329
10.8 基本類型和包裝類類型之間的自動轉換 332
10.9 BigInteger和BigDecimal類 333
10.10 String類 334
10.10.1 構造字元串 335
10.10.2 不可變字元串與駐留字元串 335
10.10.3 替換和拆分字元串 336
10.10.4 使用模式匹配、替換和拆分 336
10.10.5 字元串與數組之間的轉換 337
10.10.6 將字元和數值轉換成字元串 338
10.10.7 格式化字元串 338
10.11 StringBuilder類和StringBuffer類 340
10.11.1 修改StringBuilder中的字元串 341
10.11.2 toString、capacity、length、setLength和charAt方法 343
10.11.3 示例學習:判斷回文串時忽略既非字母又非數字的字元 343
關鍵術語 346
本章小結 346
測試題 346
編程練習題 346
第11章 繼承和多態 354
11.1 引言 354
11.2 父類和子類 354
11.3 使用super關鍵字 360
11.3.1 調用父類的構造方法 360
11.3.2 構造方法鏈 361
11.3.3 調用父類的普通方法 362
11.4 方法重寫 363
11.5 方法重寫與重載 364
11.6 Object類及其toString()方法 366
11.7 多態 366
11.8 動態綁定 367
11.9 對象轉換和instanceof操作符 370
11.10 Object類的equals方法 374
11.11 ArrayList類 375
11.12 關於列表的一些有用方法 381
11.13 示例學習:自定義棧類 382
11.14 protected數據和方法 383
11.15 防止繼承和
測試題 27
編程練習題 27
第2章 基本程式設計 29
2.1 引言 29
2.2 編寫簡單的程式 29
2.3 從控制台讀取輸入 32
2.4 標識符 35
2.5 變數 35
2.6 賦值語句和賦值表達式 37
2.7 命名常量 38
2.8 命名習慣 39
2.9 數值數據類型和操作 39
2.9.1 數值類型 39
2.9.2 從鍵盤讀取數值 40
2.9.3 數值操作符 40
2.9.4 冪運算 42
2.10 數值型字面值 43
2.10.1 整型字面值 43
2.10.2 浮點型字面值 43
2.10.3 科學記數法 44
2.11 表達式求值以及操作符優先權 44
2.12 示例學習:顯示當前時間 45
2.13 增強賦值操作符 47
2.14 自增和自減操作符 48
2.15 數值類型轉換 50
2.16 軟體開發過程 52
2.17 示例學習:整錢兌零 55
2.18 常見錯誤和陷阱 57
關鍵術語 59
本章小結 60
測試題 60
編程練習題 60
第3章 選擇 65
3.1 引言 65
3.2 boolean數據類型 65
3.3 if語句 67
3.4 雙分支if-else語句 69
3.5 嵌套的if語句和多分支if-else語句 70
3.6 常見錯誤和陷阱 72
3.7 產生隨機數 75
3.8 示例學習:計算身體質量指數 77
3.9 示例學習:計算稅率 78
3.10 邏輯操作符 81
3.11 示例學習:判定閏年 84
3.12 示例學習:彩票 85
3.13 switch語句 87
3.14 條件操作 90
3.15 操作符的優先權和結合規則 91
3.16 調試 92
關鍵術語 93
本章小結 93
測試題 94
編程練習題 94
第4章 數學函式、字元和字元串 102
4.1 引言 102
4.2 常用數學函式 103
4.2.1 三角函式方法 103
4.2.2 指數函式方法 103
4.2.3 取整方法 104
4.2.4 min、max和abs方法 104
4.2.5 random方法 105
4.2.6 示例學習:計算三角形的角度 105
4.3 字元數據類型和操作 107
4.3.1 Unicode和ASCII碼 107
4.3.2 特殊字元的轉義序列 108
4.3.3 字元型數據與數值型數據之間的轉換 108
4.3.4 字元的比較和測試 109
4.4 String類型 111
4.4.1 獲取字元串長度 112
4.4.2 從字元串中獲取字元 112
4.4.3 連線字元串 113
4.4.4 字元串的轉換 113
4.4.5 從控制台讀取字元串 114
4.4.6 從控制台讀取字元 114
4.4.7 字元串比較 115
4.4.8 獲得子字元串 116
4.4.9 獲取字元串中的字元或者子串 117
4.4.10 字元串和數字間的轉換 118
4.5 示例學習 120
4.5.1 猜測生日 120
4.5.2 將十六進制數轉換為十進制數 123
4.5.3 使用字元串修改彩票程式 124
4.6 格式化控制台輸出 126
關鍵術語 129
本章小結 129
測試題 130
編程練習題 130
第5章 循環 136
5.1 引言 136
5.2 while循環 137
5.3 示例學習:猜數字 139
5.4 循環設計策略 142
5.5 使用用戶確認或者標記值控制循環 144
5.6 do-while循環 146
5.7 for循環 148
5.8 採用哪種循環 151
5.9 嵌套循環 153
5.10 最小化數值錯誤 155
5.11 示例學習 156
5.11.1 求最大公約數 156
5.11.2 預測未來學費 158
5.11.3 將十進制數轉換為十六進制數 158
5.12 關鍵字break和continue 160
5.13 示例學習:判斷回文 163
5.14 示例學習:顯示素數 164
關鍵術語 167
本章小結 167
測試題 167
編程練習題 167
第6章 方法 176
6.1 引言 176
6.2 定義方法 177
6.3 調用方法 178
6.4 void方法與返回值方法 180
6.5 按值傳參 183
6.6 模組化代碼 186
6.7 示例學習:將十六進制數轉換為十進制數 188
6.8 重載方法 190
6.9 變數的作用域 192
6.10 示例學習:生成隨機字元 193
6.11 方法抽象和逐步求精 195
6.11.1 自頂向下的設計 196
6.11.2 自頂向下和自底向上的實現 197
6.11.3 實現細節 199
6.11.4 逐步求精的優勢 201
關鍵術語 202
本章小結 202
測試題 203
編程練習題 203
第7章 一維數組 212
7.1 引言 212
7.2 數組的基礎知識 212
7.2.1 聲明數組變數 213
7.2.2 創建數組 213
7.2.3 數組大小和默認值 214
7.2.4 訪問數組元素 214
7.2.5 數組初始化簡寫方式 215
7.2.6 處理數組 215
7.2.7 foreach循環 217
7.3 示例學習:分析數字 219
7.4 示例學習:一副牌 220
7.5 複製數組 222
7.6 將數組傳遞給方法 223
7.7 方法返回數組 226
7.8 示例學習:統計每個字母出現的次數 226
7.9 可變長參數列表 230
7.10 數組的查找 230
7.10.1 線性查找法 231
7.10.2 二分查找法 231
7.11 數組的排序 234
7.12 Arrays類 235
7.13 命令行參數 237
7.13.1 向main方法傳遞字元串 237
7.13.2 示例學習:計算器 238
關鍵術語 239
本章小結 240
測試題 240
編程練習題 240
第8章 多維數組 248
8.1 引言 248
8.2 二維數組基礎 248
8.2.1 聲明二維數組變數並創建二維數組 249
8.2.2 獲取二維數組的長度 250
8.2.3 不規則數組 250
8.3 處理二維數組 251
8.4 將二維數組傳遞給方法 253
8.5 示例學習:復選題測驗評分 254
8.6 示例學習:找出距離最近的點對 255
8.7 示例學習:數獨 257
8.8 多維數組 260
8.8.1 示例學習:每日溫度和濕度 261
8.8.2 示例學習:猜生日 263
本章小結 264
測試題 264
編程練習題 264
第9章 對象和類 276
9.1 引言 276
9.2 為對象定義類 277
9.3 示例:定義類和創建對象 278
9.4 使用構造方法構造對象 283
9.5 通過引用變數訪問對象 284
9.5.1 引用變數和引用類型 284
9.5.2 訪問對象的數據和方法 285
9.5.3 引用數據域和null值 285
9.5.4 基本類型變數和引用類型變數的區別 286
9.6 使用Java庫中的類 288
9.6.1 Date類 288
9.6.2 Random類 289
9.6.3 Point2D類 289
9.7 靜態變數、常量和方法 291
9.8 可見性修飾符 296
9.9 數據域封裝 297
9.10 向方法傳遞對象參數 300
9.11 對象數組 303
9.12 不可變對象和類 305
9.13 變數的作用域 307
9.14 this引用 308
9.14.1 使用this引用數據域 308
9.14.2 使用this調用構造方法 309
關鍵術語 310
本章小結 311
測試題 311
編程練習題 311
第10章 面向對象思考 316
10.1 引言 316
10.2 類的抽象和封裝 316
10.3 面向對象的思想 320
10.4 類的關係 322
10.4.1 關聯 323
10.4.2 聚集和組合 324
10.5 示例學習:設計Course類 325
10.6 示例學習:設計棧類 327
10.7 將基本數據類型值作為對象處理 329
10.8 基本類型和包裝類類型之間的自動轉換 332
10.9 BigInteger和BigDecimal類 333
10.10 String類 334
10.10.1 構造字元串 335
10.10.2 不可變字元串與駐留字元串 335
10.10.3 替換和拆分字元串 336
10.10.4 使用模式匹配、替換和拆分 336
10.10.5 字元串與數組之間的轉換 337
10.10.6 將字元和數值轉換成字元串 338
10.10.7 格式化字元串 338
10.11 StringBuilder類和StringBuffer類 340
10.11.1 修改StringBuilder中的字元串 341
10.11.2 toString、capacity、length、setLength和charAt方法 343
10.11.3 示例學習:判斷回文串時忽略既非字母又非數字的字元 343
關鍵術語 346
本章小結 346
測試題 346
編程練習題 346
第11章 繼承和多態 354
11.1 引言 354
11.2 父類和子類 354
11.3 使用super關鍵字 360
11.3.1 調用父類的構造方法 360
11.3.2 構造方法鏈 361
11.3.3 調用父類的普通方法 362
11.4 方法重寫 363
11.5 方法重寫與重載 364
11.6 Object類及其toString()方法 366
11.7 多態 366
11.8 動態綁定 367
11.9 對象轉換和instanceof操作符 370
11.10 Object類的equals方法 374
11.11 ArrayList類 375
11.12 關於列表的一些有用方法 381
11.13 示例學習:自定義棧類 382
11.14 protected數據和方法 383
11.15 防止繼承和