Absolute Java中文版(第6版)(雙色)

圖書信息

著 者:(美)Walter Savitch(沃爾特·薩維奇), Kenrick Mock(肯里克·莫克)

作 譯 者:師蓉

出版時間:2018-01

版 次:01-01

開 本:16開

印 次:01-01

I S B N :9787121328664

內容簡介

本書側重於面向對象設計,通過淺顯易懂的語言和代碼,很好地平衡了完整實例和解釋性討論,並圍繞著Java 語言的特性全面透徹地介紹諸多編程技術。書中全面介紹了Java 語言已經實現的封裝、繼承和多態性技術,並在介紹Swing GUI 的時候提及了事件驅動的編程,在介紹UML 和模式的同時進一步介紹了OOP。本書每節後都設計了相應的練習題,每章後都有針對本章內容的編程項目。本書不僅適合初學者使用,還可以作為使用Java 的後續計算機科學課程的參考書。

圖書目錄

第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

陷阱:行終止符'n'的處理 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 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和Vector之間的區別 741

集合框架的非參數化版本★ 742

陷阱:省略 742

16.2 Map映射 742

具體的Map類 744

16.3 疊代器 748

疊代器的概念 748

Iterator接口 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

相關詞條

熱門詞條

聯絡我們