深入理解Java核心技術(shù):寫給Java工程師的干貨筆記(基礎(chǔ)篇)
定 價:138 元
叢書名:Java工程師成神之路
- 作者:張洪亮(@Hollis)
- 出版時間:2022/4/1
- ISBN:9787121432606
- 出 版 社:電子工業(yè)出版社
- 中圖法分類:TP312.8
- 頁碼:504
- 紙張:
- 版次:01
- 開本:16開
本書主要聚焦于Java開發(fā)者必備的Java核心基礎(chǔ)知識。全書共23章,主要內(nèi)容包括面向?qū)ο、基礎(chǔ)數(shù)據(jù)類型、自動拆裝箱、字符串、集合類、反射、序列化、枚舉、I/O、動態(tài)代理、注解、泛型、時間處理、編碼方式、語法糖、BigDecimal、常用工具庫及Java新版本特性等,比較全面地覆蓋了Java開發(fā)者日常工作中用到的大部分基礎(chǔ)知識。本書既適合讀者進行體系化的學習,也適合讀者查缺補漏,將以往所學的知識點連成線,進而構(gòu)建并完善自己的知識體系。
張洪亮(@Hollis)阿里巴巴技術(shù)專家,51CTO 專欄作家,CSDN 博客專家,掘金優(yōu)秀作者,《程序員的三門課》聯(lián)合作者,《Java工程師成神之路》系列文章作者;熱衷于分享計算 機編程相關(guān)技術(shù),博文全網(wǎng)閱讀量數(shù)千萬。
目錄
第1章 什么是面向?qū)ο?br>1.1 面向過程與面向?qū)ο?br>1.2 面向?qū)ο蟮娜蠡咎卣?br>1.3 面向?qū)ο蟮奈宕蠡驹瓌t
第2章 面向?qū)ο蟮暮诵母拍?br>2.1 重載和重寫
2.2 多態(tài)
2.3 繼承與實現(xiàn)
2.4 多繼承
2.5 組合與繼承
2.6 構(gòu)造函數(shù)
2.7 變量
第3章 Java對象
3.1 Object類
3.2 JavaBean
3.3 equals和hashCode的關(guān)系
3.4 對象的clone方法
第4章 平臺無關(guān)性
4.1 什么是平臺無關(guān)性
4.2 JVM支持的語言
第5章 值傳遞
5.1 什么是值傳遞
5.2 Java中的值傳遞
第6章 基本數(shù)據(jù)類型
6.1 基本類型
6.2 浮點數(shù)
6.3 Java中負數(shù)的絕對值并不一定是正數(shù)
第7章 自動拆裝箱
7.1 自動拆箱
7.2 緩存
7.3 基本類型和包裝類怎么選
第8章 字符串
8.1 字符串的不可變性
8.2 JDK6和JDK7中substring的原理與區(qū)別
8.3 replace、replaceAll和replaceFirst的區(qū)別
8.4 String對“+”的重載
8.5 字符串拼接的幾種方式和區(qū)別
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 和異常有關(guān)的關(guān)鍵字
9.3 異常鏈
9.4 異常處理的最佳實踐
9.5 自定義異常
9.6 try-with-resources
9.7 finally是在什么時候執(zhí)行的
第10章 集合類
10.1 Java的集合體系
10.2 如何對集合進行遍歷
10.3 ArrayList、LinkedList和Vector之間的區(qū)別
10.4 SynchronizedList和Vector有什么區(qū)別
10.5 為什么ArrayList的subList結(jié)果不能轉(zhuǎn)換成ArrayList
10.6 HashSet、LinkedHashSet和TreeSet之間的區(qū)別
10.7 HashMap、Hashtable和ConcurrentHashMap之間的區(qū)別
10.8 不要使用雙括號語法初始化集合
10.9 同步容器的所有操作一定是線程安全的嗎
10.10 HashMap的數(shù)據(jù)結(jié)構(gòu)
10.11 HashMap的size和capacity有什么區(qū)別
10.12 HashMap的擴容機制
10.13 HashMap的loadFactor和threshold
10.14 為什么建議集合初始化時指定容量大小
10.15 HashMap的初始容量設(shè)置為多少合適
10.16 HashMap的hash()方法
10.17 為什么HashMap的默認容量設(shè)置成16
10.18 為什么HashMap的默認負載因子設(shè)置成0.75
10.19 HashMap的線程安全問題
10.20 為什么不能在foreach循環(huán)里對集合中的元素進行remove/add操作
10.21 如何在遍歷的同時刪除ArrayList中的元素
10.22 什么是fail-fast和fail-safe
10.23 為什么Java 8中的Map引入了紅黑樹
10.24 為什么將HashMap轉(zhuǎn)換成紅黑樹的閾值設(shè)置為8
10.25 Java 8中Stream的相關(guān)用法
10.26 Java中的并發(fā)容器
第11章 反射
11.1 反射的概念及作用
11.2 反射是如何破壞單例模式的
11.3 利用反射與工廠模式實現(xiàn)Spring IoC
第12章 序列化
12.1 序列化和反序列化
12.2 什么是transient
12.3 序列化底層原理
12.4 為什么不能隨便更改serialVersionUID
12.5 序列化如何破壞單例模式
12.6 使用序列化實現(xiàn)深拷貝
12.7 Apache-Cmmons-Collections的反序列化漏洞
12.8 fastjson的反序列化漏洞
12.9 JavaBean屬性名對序列化的影響
第13章 枚舉
13.1 枚舉的用法
13.2 枚舉是如何實現(xiàn)的
13.3 如何比較Java中的枚舉
13.4 switch對枚舉的支持
13.5 如何實現(xiàn)枚舉的序列化
13.6 為什么說枚舉是實現(xiàn)單例最好的方式
13.7 為什么接口返回值不能使用枚舉類型
第14章 I/O
14.1 什么是I/O流,如何分類
14.2 同步/異步與阻塞/非阻塞
14.3 Linux的五種I/O模型
14.4 BIO、NIO和AIO
第15章 動態(tài)代理
15.1 靜態(tài)代理與動態(tài)代理
15.2 動態(tài)代理的幾種實現(xiàn)方式
第16章 注解
16.1 注解及注解的使用
16.2 Java中的5個元注解
16.3 注解的繼承與組合
16.4 注解與反射的結(jié)合
16.5 日常開發(fā)中的常用注解
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 什么是時區(qū)
18.2 時間戳
18.3 幾種常見時間的含義和關(guān)系
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 解糖:方法變長參數(shù)
20.3 解糖:內(nèi)部類
20.4 解糖:條件編譯
20.5 解糖:斷言
20.6 解糖:數(shù)值字面量
20.7 解糖:Lambda表達式
20.8 警惕語法糖
第21章 BigDecimal
21.1 什么是BigDecimal
21.2 為什么不能直接使用double創(chuàng)建一個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:函數(shù)式編程
23.2 Java 8:接口的默認方法
23.3 Java 9:模塊化技術(shù)
23.4 Java 10:本地變量類型推斷
23.5 Java 11:增強var
23.6 Java 12:switch表達式
23.7 Java 13:text block
23.8 Java 14:更有價值的NullPointerException
23.9 Java 14:record類型
23.10 Java 15:封閉類
23.11 Java 16:instanceof模式匹配
23.12 Java 17:switch模式匹配