這是一本講解Java基本語法的書,全書始終從初學(xué)者的角度,用通俗易懂的語言和形象生動的例子來講解Java基礎(chǔ)知識,讓讀者能輕松快速掌握。
本書共分為12章,首先介紹Java語言的基本情況;然后介紹如何在Windows、Linux和macOS三種操作系統(tǒng)中安裝Java和集成開發(fā)環(huán)境以及JShell交互式編程;接著講解Java的一些常見概念和數(shù)據(jù)類型以及Java的八大類運(yùn)算符、各種表達(dá)式和語句;之后介紹類和對象這兩個(gè)核心概念,數(shù)組與集合的概念和使用,Java常用工具類,以及Java的異常處理、注解以及泛型機(jī)制;最后講解Java的文件與I/O的相關(guān)操作以及Java多線程和網(wǎng)絡(luò)編程。
本書適合 Java 入門人員、初級開發(fā)人員以及想鞏固 Java 基礎(chǔ)的人閱讀,也可作為自學(xué) Java 或者正在參加 Java 培訓(xùn)的人員的參考書。
1.本書站在零基礎(chǔ)初學(xué)者的角度,以“敲代碼、動手學(xué)”為宗旨,借助于通俗易懂的表達(dá)和形象生動的示例,對Java基礎(chǔ)知識進(jìn)行了詳細(xì)的介紹。
2.本書秉承"talk is cheap, show me the code"的極客精神,全書給出了數(shù)百個(gè)代碼示例,對于每個(gè)細(xì)小的知識點(diǎn)都提供相應(yīng)的代碼。
3.本書從Java語言的發(fā)展史講起,隨后介紹了在三種操作系統(tǒng)上安裝Java和集成開發(fā)環(huán)境的方法、步驟,之后進(jìn)入本書的核心篇幅,介紹了從Java基礎(chǔ)知識到類Java高級特性在內(nèi)的所有內(nèi)容。
4.為了保證讀者入門Java,本書除了提供數(shù)百個(gè)代碼示例,還帶有“考考你”與“動手做一做”兩個(gè)小版塊,可用來檢驗(yàn)讀者對知識的掌握情況,提升讀者的動手編碼能力,非常適合自學(xué)。
汪建(筆名seaboat),擁有10年以上的軟件開發(fā)經(jīng)驗(yàn),擅長Java、Python和C++等編程語言,從事各類業(yè)務(wù)系統(tǒng)、中間件、基礎(chǔ)架構(gòu)、人工智能系統(tǒng)等研發(fā)工作。目前負(fù)責(zé)一個(gè)人工智能團(tuán)隊(duì),致力于開發(fā)各種人工智能能力并賦能到業(yè)務(wù)系統(tǒng)中。精研工程算法、人工智能算法、自然語言處理、計(jì)算機(jī)視覺、架構(gòu)、分布式、高并發(fā)、大數(shù)據(jù)、搜索引擎等方面的技術(shù)。平時(shí)喜歡看書、運(yùn)動、寫作、編程、繪畫。崇尚技術(shù)自由,思想開放。著有《圖解 Java 并發(fā)編程》《圖解數(shù)據(jù)結(jié)構(gòu)與算法》《Tomcat內(nèi)核設(shè)計(jì)剖析》。
個(gè)人博客:blog.csdn.net/wangyangzhizhou
個(gè)人公眾號:遠(yuǎn)洋號
汪立,擁有多年的大型系統(tǒng)開發(fā)經(jīng)驗(yàn),對Java語言及生態(tài)有濃厚的興趣,對Spring、Spring Boot、Spring MVC、Spring Cloud、MyBatis、Dubbo、ZooKeeper等有較深入的研究,熟悉常用消息中間件(RocketMQ、Kafka、Elasticsearch、Redis)的使用及原理。此外,對JVM和分布式技術(shù)也有一定的研究,并持續(xù)關(guān)注Java開源技術(shù)的發(fā)展。
第 1章 走進(jìn)Java世界 1
1.1 Java介紹 1
1.2 Java發(fā)展史 2
1.3 如何選擇Java版本 4
1.4 Java語言的特性 5
1.5 JVM、JRE與JDK 6
1.6 Java執(zhí)行機(jī)制 8
1.7 Java的應(yīng)用領(lǐng)域 11
第 2章 開發(fā)環(huán)境 14
2.1 安裝Java環(huán)境 14
2.1.1 Windows系統(tǒng)下安裝JDK 14
2.1.2 Linux系統(tǒng)下安裝JDK 18
2.1.3 macOS系統(tǒng)下安裝JDK 20
2.2 第 一個(gè)Java程序 21
2.2.1 Java編程的一般步驟 21
2.2.2 編寫運(yùn)行HelloJava 22
2.2.3 初步了解代碼 22
2.3 安裝IDEA 24
2.4 JShell交互式編程 28
2.4.1 為什么要使用JShell 28
2.4.2 JShell執(zhí)行代碼片段 29
2.4.3 JShell常用命令 31
第3章 基礎(chǔ)知識 33
3.1 注釋 33
3.1.1 單行注釋 33
3.1.2 多行注釋 34
3.1.3 文檔注釋 34
3.2 標(biāo)識符和關(guān)鍵字 35
3.3 變量 38
3.3.1 變量的聲明與賦值 39
3.3.2 三類變量 39
3.4 常量 41
3.5 Java的數(shù)據(jù)類型 43
3.6 整數(shù)類型 45
3.6.1 整數(shù)類型的選擇 46
3.6.2 默認(rèn)整型 46
3.6.3 為什么要加L 47
3.6.4 不同進(jìn)制寫法 48
3.7 浮點(diǎn)類型 48
3.8 字符類型 50
3.8.1 定義字符型 50
3.8.2 與整型互相轉(zhuǎn)換 51
3.8.3 Unicode方式賦值 52
3.9 布爾類型 53
3.10 類型轉(zhuǎn)換 54
3.10.1 隱式類型轉(zhuǎn)換 54
3.10.2 顯式類型轉(zhuǎn)換 56
第4章 運(yùn)算符 59
4.1 算術(shù)運(yùn)算符 59
4.1.1 加法運(yùn)算符 59
4.1.2 減法運(yùn)算符 60
4.1.3 乘法運(yùn)算符 61
4.1.4 除法運(yùn)算符 61
4.1.5 取余運(yùn)算符 62
4.2 關(guān)系運(yùn)算符 63
4.3 自增和自減運(yùn)算符 65
4.4 邏輯運(yùn)算符 67
4.4.1 與運(yùn)算符 67
4.4.2 或運(yùn)算符 68
4.4.3 非運(yùn)算符 69
4.5 位邏輯運(yùn)算符 70
4.6 移位運(yùn)算符 72
4.6.1 右移位運(yùn)算 72
4.6.2 左移位運(yùn)算 73
4.6.3 無符號右移位運(yùn)算 74
4.7 賦值運(yùn)算符 75
4.8 其他運(yùn)算符 78
4.8.1 條件運(yùn)算符 78
4.8.2 括號運(yùn)算符 78
4.8.3 正/負(fù)運(yùn)算符 79
4.8.4 instanceof運(yùn)算符 79
4.9 運(yùn)算符優(yōu)先級 80
第5章 表達(dá)式與語句 83
5.1 表達(dá)式、語句、語句塊 83
5.1.1 表達(dá)式 83
5.1.2 語句 84
5.1.3 語句塊 85
5.2 程序執(zhí)行順序 86
5.2.1 默認(rèn)執(zhí)行順序 86
5.2.2 分支執(zhí)行順序 86
5.2.3 循環(huán)執(zhí)行順序 87
5.3 if條件分支語句 89
5.3.1 if結(jié)構(gòu) 89
5.3.2 if-else結(jié)構(gòu) 90
5.3.3 if-else-if結(jié)構(gòu) 91
5.3.4 嵌套if結(jié)構(gòu) 92
5.4 switch條件分支語句 94
5.4.1 switch的使用 94
5.4.2 break的語義 96
5.5 for循環(huán)語句 97
5.5.1 for語句語法 97
5.5.2 for語句流程 98
5.5.3 嵌套for語句 100
5.5.4 break與continue 100
5.6 while循環(huán)語句 101
5.6.1 while語句語法 101
5.6.2 break與continue 102
5.7 do-while循環(huán)語句 103
5.7.1 do-while語句語法 104
5.7.2 break與continue 104
5.7.3 while與do-while有什么不同 105
5.8 return語句 105
第6章 類與對象(上) 108
6.1 面向?qū)ο缶幊?108
6.2 面向?qū)ο蟮幕靖拍?109
6.3 Java類與對象 111
6.3.1 定義Java類 111
6.3.2 創(chuàng)建對象 113
6.3.3 對象的初始化 114
6.3.4 類的主方法 115
6.4 類的成員方法 117
6.4.1 方法的構(gòu)成 117
6.4.2 方法的定義 118
6.4.3 方法的調(diào)用 119
6.5 類的構(gòu)造方法 120
6.6 類中的this關(guān)鍵字 123
6.6.1 訪問當(dāng)前對象的屬性 123
6.6.2 調(diào)用當(dāng)前對象的方法 124
6.6.3 調(diào)用構(gòu)造方法 125
6.7 Java中的包 126
6.7.1 為什么需要包 126
6.7.2 如何聲明包 127
6.7.3 包的導(dǎo)入 127
6.7.4 內(nèi)置包與自定義包 129
6.8 Java中的4種訪問修飾符 130
6.9 Java類的封裝性 133
6.10 Java中的static關(guān)鍵字 136
6.10.1 實(shí)例方法與靜態(tài)方法 136
6.10.2 實(shí)例變量與靜態(tài)變量 137
6.10.3 靜態(tài)塊 138
6.11 Java中的null關(guān)鍵字 138
6.11.1 為什么需要null 138
6.11.2 判斷是否為null 139
6.11.3 NullPointerException異常 140
6.12 無名稱對象 141
6.13 對象的克隆 142
6.14 對象的序列化與反序列化 144
第7章 類與對象(下) 147
7.1 Java類的繼承 147
7.1.1 如何實(shí)現(xiàn)繼承 148
7.1.2 父子類的轉(zhuǎn)換 150
7.2 類的super關(guān)鍵字 151
7.2.1 調(diào)用父類的構(gòu)造方法 151
7.2.2 訪問父類實(shí)例的變量 152
7.2.3 調(diào)用父類的方法 152
7.2.4 自動添加super() 153
7.3 final關(guān)鍵字 154
7.3.1 final聲明變量 154
7.3.2 final聲明方法 155
7.3.3 final聲明類 155
7.4 Java中重寫方法 156
7.5 Java中重載方法 159
7.6 Java的多態(tài) 160
7.7 instanceof關(guān)鍵字 162
7.8 Java的抽象類 164
7.9 Java的接口 165
7.9.1 定義一個(gè)完整的接口 166
7.9.2 接口的繼承 167
7.9.3 實(shí)現(xiàn)多個(gè)接口 167
7.9.4 編譯器的隱性作用 168
7.9.5 default關(guān)鍵字 168
7.10 枚舉類型enum 170
7.11 Java內(nèi)部類 171
7.11.1 成員內(nèi)部類 172
7.11.2 靜態(tài)內(nèi)部類 172
7.11.3 匿名內(nèi)部類 173
第8章 數(shù)組與集合 176
8.1 Java的數(shù)組結(jié)構(gòu) 176
8.2 一維數(shù)組 176
8.2.1 聲明與創(chuàng)建 177
8.2.2 初始化與訪問 177
8.2.3 數(shù)組的長度 178
8.2.4 遍歷數(shù)組 179
8.3 二維數(shù)組 180
8.3.1 聲明與創(chuàng)建 180
8.3.2 初始化與訪問 181
8.3.3 遍歷數(shù)組 182
8.4 三維及更高維數(shù)組 183
8.5 數(shù)組類(Arrays) 183
8.5.1 打印數(shù)組內(nèi)容 184
8.5.2 數(shù)組排序 184
8.5.3 判斷兩個(gè)數(shù)組是否相等 185
8.5.4 填充數(shù)組 185
8.6 復(fù)制數(shù)組 186
8.6.1 System.arraycopy()方法 186
8.6.2 Arrays.copyOf()方法 187
8.6.3 Arrays.copyOfRange()方法 187
8.7 Java的集合 188
8.8 列表類 189
8.8.1 添加元素 189
8.8.2 訪問元素 190
8.8.3 修改元素 190
8.8.4 刪除元素 191
8.8.5 獲取列表元素個(gè)數(shù) 191
8.8.6 遍歷數(shù)組列表 191
8.8.7 ArrayList與LinkedList 192
8.9 集合類 192
8.9.1 哈希集合 193
8.9.2 樹集合 194
8.10 映射類 195
8.11 隊(duì)列類 197
8.12 堆棧類 198
8.13 集合工具類 200
8.13.1 排序操作 200
8.13.2 最大和最小元素 201
8.13.3 對集合進(jìn)行填充 202
8.13.4 計(jì)算某元素出現(xiàn)次數(shù) 203
8.13.5 替換所有元素 203
8.13.6 復(fù)制List對象 203
第9章 Java常用工具類 205
9.1 字符串類(String) 205
9.1.1 charAt()方法 207
9.1.2 length()方法 207
9.1.3 equals()方法 208
9.1.4 startsWith()方法 208
9.1.5 endsWith()方法 209
9.1.6 indexOf()方法 209
9.1.7 substring()方法 209
9.1.8 replace()方法 210
9.1.9 split()方法 210
9.1.10 toLowerCase()方法 210
9.1.11 toUpperCase()方法 211
9.1.12 通過+連接 211
9.2 運(yùn)行環(huán)境類(Runtime) 211
9.3 系統(tǒng)類(System) 213
9.3.1 獲取系統(tǒng)當(dāng)前時(shí)間 213
9.3.2 獲取系統(tǒng)屬性 214
9.3.3 獲取操作系統(tǒng)的環(huán)境變量 215
9.3.4 退出Java虛擬機(jī) 216
9.3.5 獲取標(biāo)準(zhǔn)輸出輸入對象 216
9.4 基本數(shù)據(jù)類型包裝類 217
9.5 數(shù)學(xué)類(Math) 220
9.5.1 自然常數(shù)與圓周率 220
9.5.2 三角函數(shù)運(yùn)算 220
9.5.3 指數(shù)對數(shù)運(yùn)算 222
9.5.4 取整運(yùn)算 222
9.5.5 取絕對值 223
9.5.6 求最大值與最小值 224
9.6 隨機(jī)數(shù)類(Random) 225
9.7 掃描類(Scanner) 226
9.8 日期類(Date) 226
9.9 正則表達(dá)式 230
9.9.1 匹配單個(gè)字符 232
9.9.2 預(yù)定義元字符 232
9.9.3 次數(shù)限定符 233
9.9.4 方括號表達(dá)式 234
9.9.5 開頭符與結(jié)尾符 235
9.9.6 或邏輯符 235
9.9.7 Pattern類 235
9.9.8 Matcher類 236
第 10章 異常、注解與泛型 239
10.1 Java的異常處理機(jī)制 239
10.1.1 try-catch組合詳解 241
10.1.2 try-multi-catch組合詳解 244
10.1.3 try-catch-finally組合詳解 246
10.1.4 throw關(guān)鍵字 249
10.1.5 throws關(guān)鍵字 250
10.2 Java的注解 252
10.2.1 @Override 252
10.2.2 @Deprecated 253
10.2.3 @SuppressWarnings 253
10.3 Java的泛型 254
10.3.1 泛型方法 255
10.3.2 泛型類型 256
10.3.3 泛型接口 257
第 11章 文件與I/O 259
11.1 Java文件類 259
11.1.1 創(chuàng)建和刪除文件或目錄 259
11.1.2 文件目錄的路徑 261
11.1.3 File類的常用方法 261
11.1.4 文件重命名 262
11.1.5 判斷文件是否存在 263
11.1.6 獲取文件屬性 263
11.1.7 遍歷文件和目錄 264
11.2 Java的輸入與輸出 265
11.2.1 輸入輸出類 266
11.2.2 文件輸入流 268
11.2.3 文件輸出流 270
11.2.4 對象輸出流 272
11.2.5 對象輸入流 274
11.2.6 文件讀取器 275
11.2.7 文件寫入器 278
第 12章 多線程與網(wǎng)絡(luò)編程 280
12.1 進(jìn)程與線程 280
12.2 多線程機(jī)制 281
12.3 線程的生命周期 282
12.4 創(chuàng)建Java線程 283
12.5 線程的優(yōu)先級 284
12.6 守護(hù)線程 286
12.7 線程的休眠 287
12.8 線程同步synchronized 289
12.9 計(jì)算機(jī)網(wǎng)絡(luò) 291
12.10 套接字 292
12.11 網(wǎng)絡(luò)地址 293
12.12 TCP通信編程 294
12.13 UDP通信編程 297
12.14 廣播通信 298