深入理解 Java 核心技術:寫給 Java 工程師的乾貨筆記 (基礎篇)

張洪亮(@Hollis)

  • 出版商: 電子工業
  • 出版日期: 2022-04-01
  • 售價: $828
  • 貴賓價: 9.5$787
  • 語言: 簡體中文
  • 頁數: 504
  • ISBN: 7121432609
  • ISBN-13: 9787121432606
  • 相關分類: Java 程式語言
  • 立即出貨 (庫存=1)

買這商品的人也買了...

商品描述

本書主要聚焦於Java開發者必備的Java核心基礎知識。全書共23章,主要內容包括面向對象、基礎數據類型、自動拆裝箱、字符串、集合類、反射、序列化、枚舉、I/O、動態代理、註解、泛型、時間處理、編碼方式、語法糖、BigDecimal、常用工具庫及Java新版本特性等,比較全面地覆蓋了Java開發者日常工作中用到的大部分基礎知識。本書既適合讀者進行體系化的學習,也適合讀者查缺補漏,將以往所學的知識點連成線,進而構建並完善自己的知識體系。

目錄大綱

目錄 
1章什麼是面向對象 
1.1 面向過程與面向對象 
1.2 面向對象的三大基本特徵 
1.3 面向對象的五大基本原則 
2章面向對象的核心概念 
2.1 重載和重寫 
2.2 多態 
2.3 繼承與實現 
2.4 多繼承 
2.5 組合與繼承 
2.6 構造函數 
2.7 變量 
3章Java對象 
3.1 Object類 
3.2 JavaBean 
3.3 equals和hashCode的關係 
3.4 對象的clone方法 
4章平台無關性 
4.1 什麼是平台無關性 
4.2 JVM支持的語言 
5章值傳遞 
5.1 什麼是值傳遞 
5.2 Java中的值傳遞 
6章基本數據類型 
6.1 基本類型 
6.2 浮點數 
6.3 Java中負數的對值並不一定是正數 
7章自動拆裝箱 
7.1 自動拆箱 
7.2 緩存 
7.3 基本類型和包裝類怎麼選 
8章字符串 
8.1 字符串的不可變性 
8.2 JDK6和JDK7中substring的原理與區別 
8.3 replace、replaceAll和replaceFirst的區別 
8.4 String對“+”的重載 
8.5 字符串拼接的幾種方式和區別 
8.6 StringJoiner 
8.7 從字符串中刪除空格的多種方式 
8.8 switch對String的支持 
8.9 字符串池 
8.10 Class常量池 
8.11 字面量是什麼時候存入字符串池的 
8.12 intern 
8.13 String有沒有長度限制 
9章異常 
9.1 Java的異常體系 
9.2 和異常有關的關鍵字 
9.3 異常鏈 
9.4 異常處理的*佳實踐 
9.5 自定義異常 
9.6 try-with-resources 
9.7 finally是在什麼時候執行的 
10章集合類 
10.1 Java的集合體系 
10.2 如何對集合進行遍歷 
10.3 ArrayList、LinkedList和Vector之間的區別 
10.4 SynchronizedList和Vector有什麼區別 
10.5 為什麼ArrayList的subList結果不能轉換成ArrayList 
10.6 HashSet、LinkedHashSet和TreeSet之間的區別 
10.7 HashMap、Hashtable和ConcurrentHashMap之間的區別 
10.8 不要使用雙括號語法初始化集合 
10.9 同步容器的所有作一定是線程安全的嗎 
10.10 HashMap的數據結構 
10.11 HashMap的size和capacity有什麼區別 
10.12 HashMap的擴容機制 
10.13 HashMap的loadFactor和threshold 
10.14 為什麼建議集合初始化時指定容量大小 
10.15 HashMap的初始容量設置為多少合適 
10.16 HashMap的hash()方法 
10.17 為什麼HashMap的默認容量設置成16 
10.18 為什麼HashMap的默認負載因子設置成0.75 
10.19 HashMap的線程安全問題 
10.20 為什麼不能在foreach循環裡對集合中的元素進行remove/add作 
10.21 如何在遍歷的同時刪除ArrayList中的元素 
10.22 什麼是fail-fast和fail-safe 
10.23 為什麼Java 8中的Map引入了紅黑樹 
10.24 為什麼將HashMap轉換成紅黑樹的閾值設置為8 
10.25 Java 8中Stream的相關用法 
10.26 Java中的並發容器 
11章反 
11.1 反的概念及作用 
11.2 反是如何破壞單例模式的 
11.3 利用反與工廠模式實現Spring IoC 
12章序列化 
12.1 序列化和反序列化 
12.2 什麼是transient 
12.3 序列化底層原理 
12.4 為什麼不能隨便更改serialVersionUID 
12.5 序列化如何破壞單例模式 
12.6 使用序列化實現深拷貝 
12.7 Apache-Cmmons-Collections的反序列化漏洞 
12.8 fastjson的反序列化漏洞 
12.9 JavaBean屬性名對序列化的影響 
13章枚舉 
13.1 枚舉的用法 
13.2 枚舉是如何實現的 
13.3 如何比較Java中的枚舉 
13.4 switch對枚舉的支持 
13.5 如何實現枚舉的序列化 
13.6 為什麼說枚舉是實現單例*好的方式 
13.7 為什麼接口返回值不能使用枚舉類型 
14章I/O 
14.1 什麼是I/O流,如何分類 
14.2 同步/異步與阻塞/非阻塞 
14.3 Linu的五種I/O模型 
14.4 BIO、NIO和AIO 
15章動態代理 
15.1 靜態代理與動態代理 
15.2 動態代理的幾種實現方式 
16章註解 
16.1 註解及註解的使用 
16.2 Java中的5個元註解 
16.3 註解的繼承與組合 
16.4 註解與反的結合 
16.5 日常開發中的常用註解 
16.6 不要過度依賴註解 
17章泛型 
17.1 什麼是泛型 
17.2 什麼是類型擦除 
17.3 在泛型為String的List中存放Integer對象 
17.4 泛型與橋接方法 
17.5 泛型會帶來哪些問題 
17.6 泛型中K、T、V、E、?等的含義 
17.7 泛型中的限定通配符和非限定通配符 
17.8 泛型的PECS原則 
18章時間處理 
18.1 什麼是時區 
18.2 時間戳 
18.3 幾種常見時間的含義和關係 
18.4 SimpleDateFormat的線程安全性問題 
18.5 Java 8中的時間處理 
18.6 為什麼日期格式化時使用y表示年,而不能用Y 
19章編碼方式 
19.1 什麼是ASCII和Unicode 
19.2 有了Unicode為什麼還需要UTF-8 
19.3 有了UTF-8為什麼還需要GBK 
19.4 為什麼會存在亂碼 
20章語法糖 
20.1 什麼是語法糖,如何解糖 
20.2 解糖:方法變長參數 
20.3 解糖:內部類 
20.4 解糖:條件編譯 
20.5 解糖:斷言 
20.6 解糖:數值字面量 
20.7 解糖:Lambda表達式 
20.8 警惕語法糖 
21章BigDecimal 
21.1 什麼是BigDecimal 
21.2 為什麼不能直接使用double創建一個BigDecimal 
21.3 為什麼不能使用BigDecimal的equals方法比較大小 
22章常用的Java工具庫 
22.1 Apache Commons 
22.2 各類BeanUtils工具的性能對比 
22.3 MapStruct 
22.4 BeanUtils與深/淺拷貝 
22.5 Guava 
22.6 Lombok 
23章Java新版本特性 
23.1 Java 8:函數式編程 
23.2 Java 8:接口的默認方法 
23.3 Java 9:模塊化技術 
23.4 Java 10:本地變量類型推斷 
23.5 Java 11:增強var 
23.6 Java 12:switch表達式 
23.7 Java 13:tet block 
23.8 Java 14:更有價值的NullPointerEception 
23.9 Java 14:record類型 
23.10 Java 15:封閉類 
23.11 Java 16:instanceof模式匹配 
23.12 Java 17:switch模式匹配