Java官方入門教程(第9版·Java 17) Java: A Beginner's Guide, 9/e

[美]赫伯特·希爾特(Herbert Schildt)著 殷海英 譯

  • Java官方入門教程(第9版·Java 17)-preview-1
  • Java官方入門教程(第9版·Java 17)-preview-2
  • Java官方入門教程(第9版·Java 17)-preview-3
Java官方入門教程(第9版·Java 17)-preview-1

相關主題

商品描述

《Java官方入門教程(第9版·Java 17)》針對Java SE 17做了全面細致的更新,將引導你輕松學習**的核心Java編程技能。《Java官方入門教程(第9版·Java 17)》由暢銷編程書作者Herbert Schildt撰寫,開篇講述基礎知識,內容涉及如何創建、編譯和運行Java程序。此後濃墨重彩地描述構成Java語言核心的關鍵字、語法和結構。本書還涵蓋Java的一些更高級特性,如多線程編程、泛型、lambda表達式、模塊、記錄、密封類和Swing。另外,還介紹了Java的交互式編程工具JShell。本書通俗易懂、簡明扼要、詳略得當,成為全球數百萬讀者的選擇。

目錄大綱

目  錄

 

第1章  Java基礎 1

1.1  Java的歷史和基本原則 2

1.1.1  Java的起源 3

1.1.2  Java與C和C++的關系 3

1.1.3  Java對Internet的貢獻 4

1.1.4  Java的魔法:字節碼 5

1.1.5  超越applet 6

1.1.6  更快速的發布時間表 7

1.1.7  Java的主要術語 8

1.2  面向對象程序設計 8

1.2.1  封裝 9

1.2.2  多態性 9

1.2.3  繼承 10

1.3  Java開發工具包 10

1.4  第一個簡單的程序 11

1.4.1  輸入程序 12

1.4.2  編譯程序 12

1.4.3  逐行分析第一個程序 13

1.5  處理語法錯誤 15

1.6  第二個簡單程序 15

1.7  另一種數據類型 17

1.8  兩個控制語句 19

1.8.1  if語句 20

1.8.2  for循環語句 21

1.9  創建代碼塊 22

1.10  分號和定位 24

1.11  縮進原則 24

1.12  Java關鍵字 26

1.13  Java標識符 27

1.14  Java類庫 27

1.15  自測題 27

 

第2章  數據類型與運算符 29

2.1  數據類型為什麽重要 30

2.2  Java的基本類型 30

2.2.1  整數類型 31

2.2.2  浮點型 32

2.2.3  字符型 33

2.2.4  布爾類型 34

2.3  字面值 36

2.3.1  十六進制、八進制和二進制字面值 36

2.3.2  字符轉義序列 37

2.3.3  字符串字面值 37

2.4  變量詳解 38

2.4.1  初始化變量 38

2.4.2  動態初始化 39

2.5  變量的作用域和生命期 39

2.6  運算符 41

2.7  算術運算符 42

2.8  關系運算符和邏輯運算符 43

2.9  短路邏輯運算符 45

2.10  賦值運算符 46

2.11  速記賦值 46

2.12  賦值中的類型轉換 48

2.13  不兼容類型的強制轉換 49

2.14  運算符的優先級 50

2.15  表達式 52

2.15.1  表達式中的類型轉換 52

2.15.2  間距和圓括號 54

2.16  自測題 54

第3章 程序控制語句 55

3.1  從鍵盤輸入字符 56

3.2  if語句 57

3.2.1  嵌套if語句 58

3.2.2  if-else-if階梯狀結構 59

3.3  switch語句 60

3.4  for循環 66

3.4.1  for循環的一些變體 67

3.4.2  缺失部分要素的for循環 68

3.4.3  無限循環 69

3.4.4  沒有循環體的循環 69

3.4.5  在for循環內部聲明循環控制變量 70

3.4.6  增強型for循環 70

3.5  while循環 71

3.6  do-while循環 72

3.7  使用break語句退出循環 77

3.8  將break語句作為一種goto

語句使用 78

3.9  使用continue語句 82

3.10  嵌套循環 86

3.11  自測題 87

第4章 類、對象和方法 89

4.1  類的基礎知識 90

4.1.1  類的基本形式 90

4.1.2  定義類 91

4.2  如何創建對象 94

4.3  引用變量和賦值 94

4.4  方法 95

4.5  從方法返回值 97

4.6  返回值 98

4.7  使用形參 100

4.8  構造函數 107

4.9  帶形參的構造函數 109

4.10  深入介紹new運算符 110

4.11  垃圾回收 111

4.12  this關鍵字 111

4.13  自測題 113

第5章 其他數據類型與運算符 115

5.1  數組 116

5.2  多維數組 121

5.2.1  二維數組 121

5.2.2  不規則數組 122

5.2.3  三維或更多維的數組 123

5.2.4  初始化多維數組 123

5.3  另一種聲明數組的語法 124

5.4  數組引用賦值 125

5.5  使用length成員 126

5.6  for-each形式的循環 131

5.6.1  迭代多維數組 134

5.6.2  應用增強型for循環 135

5.7  字符串 135

5.7.1  構造字符串 136

5.7.2  操作字符串 136

5.7.3  字符串數組 138

5.7.4  字符串是不可變的 139

5.7.5  使用String控制switch語句 140

5.8  使用命令行實參 142

5.9  使用局部變量的類型推斷功能 143

5.9.1  引用類型的局部變量類型推斷 145

5.9.2  在for循環中使用局部變量類型推斷 146

5.9.3  var的一些限制 147

5.10  位運算符 147

5.10.1  位運算符的與、或、異或和非 148

5.10.2  移位運算符 151

5.10.3  位運算符的賦值速記符 153

5.11  ?運算符 156

5.12  自測題 157

第6章 方法和類詳解 159

6.1  控制對類成員的訪問 160

6.2  向方法傳遞對象 165

6.3  返回對象 168

6.4  方法重載 170

6.5  重載構造函數 175

6.6  遞歸 179

6.7  理解static關鍵字 181

6.8  嵌套類和內部類 187

6.9  varargs:可變長度的實參 190

6.9.1  varargs基礎 190

6.9.2  重載varargs方法 193

6.9.3  varargs和歧義 194

6.10  自測題 195

第7章 繼承 197

7.1  繼承的基礎知識 198

7.2  成員訪問與繼承 201

7.3  構造函數和繼承 203

7.4  使用super調用超類構造函數 205

7.5  使用super訪問超類成員 208

7.6  創建多級層次結構 212

7.7  何時執行構造函數 215

7.8  超類引用和子類對象 216

7.9  方法重寫 220

7.10  重寫的方法支持多態性 222

7.11  為何使用重寫方法 224

7.12  使用抽象類 227

7.13  使用final 231

7.13.1  使用final防止重寫 231

7.13.2  使用final防止繼承 232

7.13.3  對數據成員使用final 232

7.14  Object類 233

7.15  自測題 234

第8章 包和接口 237

8.1  包 238

8.1.1  定義包 239

8.1.2  尋找包和CLASSPATH 239

8.1.3  一個簡短的包示例 240

8.2  包和成員訪問 241

8.3  理解被保護的成員 243

8.4  導入包 245

8.5  Java的類庫位於包中 246

8.6  接口 247

8.7  實現接口 248

8.8  使用接口引用 251

8.9  接口中的變量 258

8.10  接口能夠擴展 258

8.11  默認接口方法 259

8.11.1  默認方法的基礎知識 260

8.11.2  默認方法的實際應用 261

8.11.3  多繼承問題 262

8.12  在接口中使用靜態方法 263

8.13  私有接口方法 264

8.14  有關包和接口的最後思考 265

8.15  自測題 265

第9章 異常處理 267

9.1  異常的層次結構 268

9.2  異常處理基礎 269

9.2.1  使用關鍵字try和catch 269

9.2.2  一個簡單的異常示例 270

9.3  未捕獲異常的後果 272

9.4  使用多個catch語句 274

9.5  捕獲子類異常 275

9.6  try代碼塊可以嵌套 276

9.7  拋出異常 277

9.8  Throwable詳解 279

9.9  使用finally 280

9.10  使用throws語句 282

9.11  另外3種異常功能 283

9.12  Java的內置異常 284

9.13  創建異常子類 286

9.14  自測題 291

第10章 使用I/O 293

10.1  基於流的Java I/O 294

10.2  字節流和字符流 294

10.3  字節流類 295

10.4  字符流類 295

10.5  預定義流 296

10.6  使用字節流 296

10.6.1  讀取控制台輸入 297

10.6.2  寫入控制台輸出 298

10.7  使用字節流讀寫文件 299

10.7.1  從文件輸入 299

10.7.2  寫入文件 303

10.8  自動關閉文件 304

10.9  讀寫二進制數據 307

10.10  隨機訪問文件 311

10.11  使用Java字符流 313

10.11.1  使用字符流的控制台輸入 314

10.11.2  使用字符流的控制台輸出 317

10.12  使用字符流的文件I/O 318

10.12.1  使用FileWriter 318

10.12.2  使用FileReader 319

10.13  使用Java的類型封裝器轉換數值字符串 320

10.14  自測題 328

第11章 多線程程序設計 331

11.1  多線程的基礎知識 332

11.2  Thread類和Runnable接口 333

11.3  創建一個線程 333

11.4  創建多個線程 342

11.5  確定線程何時結束 345

11.6  線程的優先級 348

11.7  同步 350

11.8  使用同步方法 351

11.9  同步語句 354

11.10  使用notify( )、wait( )和notifyAll( )的線程通信 356

11.11  線程的掛起、繼續執行和停止 361

11.12  自測題 366

第12章 枚舉、自動裝箱、註解和其他特性 367

12.1  枚舉 368

12.2  Java語言中的枚舉是類類型 370

12.3  values( )和valueOf( )方法 371

12.4  構造函數、方法、實例變量和枚舉 372

12.5  枚舉繼承enum 374

12.6  自動裝箱 380

12.7  類型封裝器 380

12.8  自動裝箱的基礎知識 382

12.9  自動裝箱和方法 383

12.10  發生在表達式中的自動裝箱/

自動拆箱 384

12.11  靜態導入 386

12.12  註解(元數據) 388

12.13  instanceof運算符 390

12.14  自測題 392

第13章 泛型 395

13.1  泛型的基礎知識 396

13.2  簡單的泛型示例 397

13.2.1  泛型只能用於引用類型 400

13.2.2  泛型類型根據其類型參數而不同 400

13.2.3  帶有兩個類型形參的泛型類 400

13.2.4  泛型類的一般形式 402

13.3  受限類型 402

13.4  使用通配符實參 405

13.5  受限通配符 408

13.6  泛型方法 410

13.7  泛型構造函數 412

13.8  泛型接口 413

13.9  原類型和遺留代碼 419

13.10  使用菱形運算符進行類型推斷 421

13.11  局部變量類型推斷和泛型 422

13.12  擦除特性 423

13.13  歧義錯誤 423

13.14  一些泛型限制 424

13.14.1  類型形參不能被實例化 424

13.14.2  對靜態成員的限制 424

13.14.3  泛型數組限制 425

13.14.4  泛型異常限制 426

13.15  繼續學習泛型 426

13.16  自測題 426

第14章 lambda表達式和方法引用 429

14.1  lambda表達式簡介 430

14.1.1  lambda表達式的基礎知識 431

14.1.2  函數式接口 432

14.1.3  幾個lambda表達式示例 433

14.2  塊lambda表達式 438

14.3  泛型函數式接口 439

14.4  lambda表達式和變量捕獲 444

14.5  從 lambda表達式中拋出異常 446

14.6  方法引用 447

14.6.1  靜態方法的方法引用 447

14.6.2  實例方法的方法引用 449

14.7  構造函數引用 452

14.8  預定義的函數式接口 455

14.9  自測題 456

第15章 模塊 459

15.1  模塊基礎 460

15.1.1  簡單的模塊示例 461

15.1.2  編譯、運行第一個模塊示例 465

15.1.3  詳述requires和exports 466

15.2  java.base和平臺模塊 466

15.3  舊代碼和未命名的模塊 467

15.4  導出到特定的模塊 468

15.5  使用requires transitive 469

15.6  使用服務 473

15.6.1  服務和服務提供程序的基礎知識 473

15.6.2  基於服務的關鍵字 474

15.6.3  基於模塊的服務示例 474

15.7  其他模塊功能 480

15.7.1  open模塊 480

15.7.2  opens語句 481

15.7.3  requires static 481

15.8  繼續學習模塊 481

15.9  自測題 482

第16章 switch表達式、記錄以及其他新近添加的特性 483

16.1  switch的增強 484

16.1.2  switch表達式和yield語句簡介 486

16.1.3  case語句中的箭頭 488

16.1.4  深入介紹箭頭case 489

16.2  記錄 495

16.2.1  記錄的基礎知識 495

16.2.2  創建記錄構造函數 497

16.2.3  深入介紹記錄的getter方法 501

16.3  instanceof的模式匹配 502

16.4  密封類和密封接口 503

16.4.1  密封類 504

16.4.2  密封接口 506

16.5  未來的發展方向 507

16.6  自測題 507

第17章 Swing介紹 509

17.1  Swing的起源和設計原則 510

17.2  組件和容器 512

17.2.1  組件 512

17.2.2  容器 513

17.2.3  頂級容器窗格 513

17.3  佈局管理器 513

17.4  第一個簡單的Swing程序 514

17.5  Swing事件處理 518

17.5.1  事件 518

17.5.2  事件源 519

17.5.3  事件監聽器 519

17.5.4  事件類和監聽器接口 519

17.6  使用JButton 520

17.7  使用JTextField 523

17.8  創建JCheckBox 526

17.9  使用JList 529

17.10  使用匿名內部類或lambda表達式來處理事件 538

17.11  自測題 539

—以下內容通過掃描封底二維碼獲取—

附錄A  自測題答案 541

附錄B  使用Java的文檔註釋 579

附錄C  編譯和運行簡單的單文件程序 589

附錄D  JShell簡介 591

附錄E  更多Java關鍵字 601