Java學習筆記(第6版)

林信良 著

  • 出版商: 清華大學
  • 出版日期: 2025-05-01
  • 售價: $839
  • 語言: 簡體中文
  • ISBN: 7302686963
  • ISBN-13: 9787302686965
  • 下單後立即進貨 (約4週~6週)

  • Java學習筆記(第6版)-preview-1
  • Java學習筆記(第6版)-preview-2
  • Java學習筆記(第6版)-preview-3
Java學習筆記(第6版)-preview-1

相關主題

商品描述

"·基於Servlet 4.0/Java SE 15,對代碼進行了重新審閱與更新。 ·介紹OWASP TOP 10、CWE、CVE,討論註入攻擊、會話安全、密碼管理、Java EE安全機制、CSRF等Web安全概念。 ·增加關於Spring的內容,包含Spring DI/AOP、Spring MVC、Spring Security等,以及Spring Boot快速開發方案的使用。 ·涵蓋中文處理、圖片驗證、自動登錄、驗證過濾器、壓縮處理、在線資料管理、郵件發送等領域的實用案例。 ·綜合練習示例貫穿全書,你可將所學技術應用於其中,並通過重構來改進應用程序架構。 ·本書提供的實戰示例可以讓你更好地掌握學習重點。作為本書內容之一的IDE操作,使你可以在實際工作中快速上手。"

目錄大綱

目錄

第 1 章  Java平臺概述  1

1.1  Java不只是語言  1

1.1.1  Java的前世今生  1

1.1.2  三大平臺  5

1.1.3  JCP與JSR  7

1.1.4  Oracle JDK與OpenJDK  8

1.2  JVM/JRE/JDK  10

1.2.1  什麽是JVM  10

1.2.2  JRE與JDK  12

1.2.3  下載並安裝JDK  13

1.2.4  瞭解JDK安裝內容  15

第 2 章  從JDK到IDE  17

2.1  從“Hello,World”開始  17

2.1.1  編寫Java源代碼  17

2.1.2  PATH是什麽  20

2.1.3  JVM(java)與CLASSPATH  23

2.1.4  編譯器(javac)與CLASSPATH  26

2.2  管理源代碼和字節碼文件  27

2.2.1  編譯器(javac)與SOURCEPATH  28

2.2.2  通過package對類進行管理  29

2.2.3  使用import簡化操作  31

2.3  初識模塊平臺系統  34

2.3.1  JVM(java)與module-path  34

2.3.2  編譯器(javac)與module-path  37

2.3.3  編譯器(javac)與module-source-path  38

2.4  使用IDE  39

2.4.1  IDE項目管理基礎  39

2.4.2  使用了哪個JRE  43

2.4.3  類文件版本  45

第 3 章  基礎語法  48

3.1  類型、變量和運算符  48

3.1.1  類型  48

3.1.2  變量  52

3.1.3  運算符  55

3.1.4  處理類型  62

3.2  流程控制  66

3.2.1  if...else條件表達式  66

3.2.2  switch條件表達式  69

3.2.3  for循環  72

3.2.4  while循環  74

3.2.5  break和continue  75

課後練習  77

第 4 章  認識對象  78

4.1  類與實例  78

4.1.1  定義類  78

4.1.2  使用標準類  82

4.1.3  對象賦值與相等性  85

4.2  基本類型包裝器  87

4.2.1 包裹基本類型  87

4.2.2  自動裝箱與拆箱  88

4.2.3  自動裝箱與拆箱的內幕  89

4.3  數組對象  92

4.3.1  數組基礎  92

4.3.2  操作數據對象  95

4.3.3  復制數組  101

4.4  字符串對象  105

4.4.1  字符串基礎  105

4.4.2  字符串特性  108

4.4.3  文本塊  112

4.4.4  源代碼編碼  114

4.4.5  Java與Unicode  117

4.5  查詢Java API文檔  120

課後練習  124

第 5 章  對象封裝  126

5.1  什麽是封裝  126

5.1.1  封裝對象初始流程  126

5.1.2  對象封裝的操作流程  129

5.1.3  封裝對象的內部數據  132

5.2  類的語法細節  135

5.2.1  public權限設定  135

5.2.2  關於構造函數  137

5.2.3  構造函數與方法重載  138

5.2.4  使用this  140

5.2.5  static類成員  144

5.2.6  變長參數  149

5.2.7  內部類  150

課後練習  152

第 6 章  繼承與多態  154

6.1  什麽是繼承  154

6.1.1  繼承共同行為與實現  154

6.1.2  多態與從屬  158

6.1.3  重新定義實現  163

6.1.4  抽象方法、抽象類  166

6.2  繼承語法細節  167

6.2.1  protected成員  167

6.2.2  覆蓋的細節  169

6.2.3  再看構造函數  171

6.2.4  再看final關鍵字  173

6.2.5  java.lang.Object  174

6.2.6  關於垃圾收集  181

6.2.7  再看抽象類  184

課後練習  186

第 7 章  接口與多態  188

7.1  什麽是接口  188

7.1.1  使用接口定義行為  188

7.1.2  行為的多態  193

7.1.3  解決需求變化  196

7.2  接口的語法細節  203

7.2.1  接口的默認設定  203

7.2.2  匿名內部類  207

7.2.3  使用enum列舉常量  212

課後練習  214

第 8 章  異常處理  215

8.1  語法與繼承架構  215

8.1.1  使用try、catch  215

8.1.2  異常繼承架構  218

8.1.3  要抓還是要拋  223

8.1.4  貼心還是製造麻煩  225

8.1.5  瞭解堆棧跟蹤  228

8.1.6  關於assert  232

8.2  異常與資源管理  235

8.2.1  使用finally  235

8.2.2  自動嘗試關閉資源  237

8.2.3  java.lang.AutoCloseable接口  240

課後習題  243

第 9 章  Collection與Map  244

9.1  使用Collection收集對象  244

9.1.1  認識Collection架構  244

9.1.2  帶有索引的List  246

9.1.3  內容不重復的Set  250

9.1.4  支持隊列操作的Queue  255

9.1.5  使用泛型  258

9.1.6  Lambda表達式簡介  263

9.1.7  Iterable與Iterator  265

9.1.8  Comparable與Comparator  268

9.2  鍵值對與Map  273

9.2.1  常用Map實現的類  274

9.2.2  遍歷Map鍵值  278

9.3  不可變的Collection與Map  281

9.3.1  不可變特性簡介  281

9.3.2  Collections的unmodifiableXXX()方法  282

9.3.3  List、Set、Map的of()方法  284

課後練習  287

第 10 章  輸入/輸出  288

10.1  InputStream與OutputStream  288

10.1.1  流設計概念  288

10.1.2  流繼承架構  292

10.1.3  流處理包裝器  295

10.2  字符處理類  300

10.2.1  Reader與Writer繼承架構  300

10.2.2  字符處理裝飾器  302

課後練習  304

第 11 章  線程與並行API  306

11.1  線程  306

11.1.1  線程簡介  306

11.1.2  Thread與Runnable  309

11.1.3  線程生命周期  311

11.1.4  關於ThreadGroup  318

11.1.5  synchronized與volatile  321

11.1.6  等待與通知  333

11.2  並行API  338

11.2.1  Lock、ReadWriteLock與Condition  338

11.2.2  使用Executor  348

11.2.3  並行Collection簡介  357

課後練習  361

第 12 章  Lambda  362

12.1  認識Lambda語法  362

12.1.1  Lambda語法概覽  362

12.1.2  Lambda表達式與函數式接口  366

12.1.3  當Lambda遇上this與final時  368

12.1.4  方法與構造函數引用  370

12.1.5  接口默認方法  373

12.2  Functional與Stream API  377

12.2.1  使用Optional取代null  377

12.2.2  標準API的函數式接口  380

12.2.3  使用Stream進行管道操作  383

12.2.4  對Stream進行reduce與collect  386

12.2.5  關於flatMap()方法  392

12.2.6  與Stream相關的API  395

12.2.7  活用Optional與Stream  396

12.3  Lambda、並行化與異步處理  399

12.3.1  Stream與並行化  399

12.3.2  Arrays與並行化  403

12.3.3  通過CompletableFuture進行異步處理  404

課後練習  408

第 13 章  時間與日期  409

13.1  認識時間與日期  409

13.1.1  衡量時間  409

13.1.2  年歷簡介  411

13.1.3  認識時區  412

13.2  認識Date與Calendar  412

13.2.1  時間軸上瞬間的Date  413

13.2.2  處理時間與日期的Calendar  414

13.3  新時間與日期API  417

13.3.1  機器時間觀點的API  417

13.3.2  人類時間觀點的API  419

13.3.3  對時間的運算  422

13.3.4  年歷系統設計  425

課後練習  426

第 14 章  NIO與NIO2  427

14.1  認識NIO  427

14.1.1  NIO概述  427

14.1.2  Channel架構與操作  428

14.1.3  Buffer架構與操作  429

14.2  NIO2文件系統  433

14.2.1  NIO2架構  433

14.2.2  操作路徑  434

14.2.3  屬性讀取與設定  437

14.2.4  操作文件與文件夾  440

14.2.5  讀取、訪問文件夾  443

14.2.6  過濾、搜索文件  448

課後練習  451

第 15 章  通用API  452

15.1  日誌  452

15.1.1  日誌API簡介  452

15.1.2  指定日誌層級  454

15.1.3  使用Handler與Formatter  457

15.1.4  自定義Handler、Formatter與Filter  458

15.1.5  使用logging.properties  461

15.2  HTTP Client API  462

15.2.1  淺談URI與HTTP  462

15.2.2  HTTP Client API入門  466

15.2.3  發送請求信息  469

15.3  正則表達式  473

15.3.1  正則表達式簡介  473

15.3.2  quote()與quoteReplacement()  481

15.3.3  Pattern與Matcher  482

15.3.4  Unicode正則表達式  487

15.4  處理數字  490

15.4.1  使用BigInteger  490

15.4.2  使用BigDecimal  492

15.4.3  數字的格式化  495

15.5  再談堆棧跟蹤  496

15.5.1  獲取StackTraceElement  496

15.5.2  Stack-Walking API  499

課後練習  504

第 16 章  整合數據庫  505

16.1  JDBC入門  505

16.1.1  JDBC簡介  505

16.1.2  連接數據庫  512

16.1.3  使用Statement、ResultSet  519

16.1.4  使用PreparedStatement、CallableStatement  524

16.2  JDBC高級應用  528

16.2.1  使用DataSource取得連接  528

16.2.2  使用ResultSet查看、更新數據  532

16.2.3  批量更新  534

16.2.4  Blob與Clob  535

16.2.5  事務簡介  536

16.2.6  metadata簡介  545

課後練習  547

第 17 章  反射與類加載器  549

17.1  使用反射  549

17.1.1  Class與.class文件  549

17.1.2  使用Class.forName()  552

17.1.3  從Class創建對象  554

17.1.4  從Class獲得信息  557

17.1.5  操作對象的方法與成員 560

17.1.6  動態代理  563

17.1.7  反射與模塊  567

17.1.8  使用ServiceLoader  574

17.2  瞭解類加載器  577

17.2.1  類加載器層級  577

17.2.2  創建ClassLoader實例  579

課後練習  581

第 18 章  自定義泛型、列舉與標註  582

18.1  自定義泛型  582

18.1.1  使用extends與?  582

18.1.2  使用super與?  588

18.2  自定義列舉  591

18.2.1  成員的細節  591

18.2.2  構造函數、方法與接口  592

18.3  record與sealed  596

18.3.1  深入瞭解record類  596

18.3.2  sealed的類型層級  601

18.4  關於標註  604

18.4.1  常用標準標註  604

18.4.2  自定義標註類型  608

18.4.3  運行時讀取標註信息  614

課後練習  617

第 19 章  深入瞭解模塊化  619

19.1  使用模塊  619

19.1.1  模塊的種類  619

19.1.2  requires、exports與opens的細節說明  623

19.1.3  補丁模塊  627

19.1.4  放寬模塊封裝與依賴  628

19.2  模塊API  630

19.2.1  使用Module  630

19.2.2  使用ModuleDescriptor  632

19.2.3  淺談ModuleLayer  633

19.3  打包模塊  634

19.3.1  使用jar打包  635

19.3.2  使用JMOD進行打包  637

19.3.3  使用jlink建立運行時鏡像  640

附錄  如何使用本書項目  643