Java語(yǔ)言是一種典型的面向?qū)ο蟮、跨平臺(tái)的、支持分布式和多線程的編程語(yǔ)言,具有極強(qiáng)的擴(kuò)展性,自其誕生以來(lái),迅速被業(yè)界認(rèn)可并廣泛應(yīng)用于 Web 應(yīng)用程序的開發(fā)中。本書正是在此形式下,結(jié)合Java語(yǔ)言學(xué)習(xí)的實(shí)際需要和作者多年的實(shí)踐教學(xué)經(jīng)驗(yàn)編寫而成的。
本書以“數(shù)據(jù)如何表示/存儲(chǔ)到如何計(jì)算/處理”為主線,從程序設(shè)計(jì)基礎(chǔ)入手,詳細(xì)介紹了程序設(shè)計(jì)知識(shí)、Java語(yǔ)言的基本概念和編程方法,內(nèi)容涉及Java演化進(jìn)程、編程思想、Java語(yǔ)言的基本語(yǔ)法、數(shù)據(jù)類型、類、繼承、異常、輸入輸出流、集合等,基本覆蓋了Java語(yǔ)言的大部分技術(shù),是進(jìn)一步使用Java語(yǔ)言進(jìn)行技術(shù)開發(fā)的基礎(chǔ)。在這個(gè)過(guò)程中,您將學(xué)到j(luò)avac/java工具是如何工作的,java包是什么,以及java程序通常的組織方式。一旦您熟悉了這一點(diǎn),您將了解該語(yǔ)言的高級(jí)概念,例如控制流關(guān)鍵字等,同時(shí),您還將探索面向?qū)ο缶幊碳捌湓谑笿ava成為現(xiàn)實(shí)中所起的作用。在最后的章節(jié)中,您將掌握類、類型轉(zhuǎn)換和接口,并了解數(shù)據(jù)結(jié)構(gòu)、數(shù)組和字符串的用法;能夠處理異 常情況以及創(chuàng)建泛型等。
本書的內(nèi)容編排遵循由淺入深、循序漸進(jìn)的基本原則,編寫上采取了貼近實(shí)戰(zhàn)的結(jié)
構(gòu),書中包含了多個(gè)練習(xí)和測(cè)試,這些練習(xí)和測(cè)試均來(lái)自真實(shí)的工作案例,可以讓您在這些真實(shí)的案例學(xué)習(xí)過(guò)程中,真正地掌握J(rèn)ava編程和提高自己的編程水平。同時(shí),本書所有的練習(xí)和測(cè)試均配有詳細(xì)的講解和完整的程序代碼,以期更好地幫助讀者學(xué)習(xí)。
本書的目標(biāo)就是讓您通過(guò)本書的閱讀和學(xué)習(xí),能夠掌握創(chuàng)建和運(yùn)行Java程序,在程序中能夠熟練使用數(shù)據(jù)類型、數(shù)據(jù)結(jié)構(gòu)和控制流,可以熟練使用構(gòu)造函數(shù)和繼承,了解高級(jí)數(shù)據(jù)結(jié)構(gòu)以組織和存儲(chǔ)數(shù)據(jù),可以在編譯過(guò)程中使用泛型實(shí)現(xiàn)更強(qiáng)的檢查類型, 學(xué)會(huì)處理程序中的異常。
由于編者水平有限,書中難免存在不足、疏漏或者錯(cuò)誤的地方,讀者若在學(xué)習(xí)過(guò)程中發(fā)現(xiàn)有誤的地方,歡迎批評(píng)指正和交流。
編 者
2021年10月
第1章 快速入門:基礎(chǔ)知識(shí) / 1
1.1 Java簡(jiǎn)介 / 1
1.2 安裝Java / 2
1.3 Java應(yīng)用程序 / 5
1.3.1 規(guī) 則 / 5
測(cè)試1 輸出簡(jiǎn)單算術(shù)運(yùn)算 / 7
1.3.2 從用戶獲取輸入程序 / 7
1.3.3 包 / 9
測(cè)試2 使用Scanner類執(zhí)行操作從用戶端讀取數(shù)據(jù) 10
第2章 變量與數(shù)據(jù)類型 / 12
2.1 數(shù)據(jù)類型和變量/ 12
2.1.1 數(shù)據(jù)類型/ 12
2.1.2 變 量/ 12
2.2 整型數(shù)據(jù)/ 13
2.2.1 整型(int) / 14
2.2.2 長(zhǎng)整型(long)15
2.2.3 類型轉(zhuǎn)換15
2.2.4 字節(jié)型(byte)16
2.2.5 短整型(short) 16
2.2.6 字符型(char)/ 17
2.3 布爾型(Boolean) / 18
2.4 浮點(diǎn)型/ 19
測(cè)試3 輸入學(xué)生信息并輸出學(xué)生ID / 21
測(cè)試4 計(jì)算裝滿水果盒的數(shù)量 / 21
第3章 流程控制 / 23
3.1 條件語(yǔ)句/ 23
3.1.1 if語(yǔ)句 / 23
3.1.2 if-else語(yǔ)句 / 24
3.1.3 else-if語(yǔ)句 / 26
1Java編程項(xiàng)目實(shí)戰(zhàn)
3.1.4 switch語(yǔ)句 / 28
測(cè)試5 使用條件語(yǔ)句編程 / 30
測(cè)試6 開發(fā)溫度系統(tǒng) / 30
3.2 循環(huán)結(jié)構(gòu)/ 31
3.2.1 for循環(huán) / 31
測(cè)試7 編程實(shí)現(xiàn)for循環(huán)/ 33
3.2.2 嵌套for循環(huán) / 35
3.2.3 for each循環(huán) / 36
3.2.4 while和do while循環(huán) / 37
測(cè)試8 while循環(huán) / 40
測(cè)試9 循環(huán)結(jié)構(gòu) / 40
測(cè)試10 帶嵌套的循環(huán) / 40
第4章 面向?qū)ο蟪绦蛟O(shè)計(jì) / 42
4.1 面向?qū)ο蟪绦蛟O(shè)計(jì)的特點(diǎn)和原則/ 42
4.2 面向?qū)ο蟪绦蛟O(shè)計(jì)的編程范式/ 43
4.3 類/ 44
4.4 構(gòu)造函數(shù)/ 48
4.5 This的用法 / 50
測(cè)試11 用Java創(chuàng)建一個(gè)簡(jiǎn)單的類 / 50
測(cè)試12 編寫計(jì)算器 / 51
4.6 繼 承/ 51
4.6.1 繼承的原則/ 51
4.6.2 繼承的類型/ 52
4.6.3 繼承的關(guān)鍵字/ 52
4.6.4 構(gòu)造器/ 54
4.6.5 繼承的重要性/ 56
測(cè)試13 使用繼承創(chuàng)建計(jì)算器 / 58
4.7 重 載/ 59
4.7.1 重載規(guī)則/ 59
4.7.2 構(gòu)造函數(shù)重載/ 61
4.8 多態(tài)性/ 62
4.9 重載和重寫之間的區(qū)別/ 63
第5章 接口和類型轉(zhuǎn)換 / 64
5.1 接 口/ 64
測(cè)試14 用Java創(chuàng)建和實(shí)現(xiàn)接口 / 68
2目 錄
5.2 類型轉(zhuǎn)換/ 69
測(cè)試15 使用instanceof檢查類型轉(zhuǎn)換是否正確 / 70
5.3 對(duì)象類/ 71
5.4 自動(dòng)裝箱與拆箱/ 72
測(cè)試16 Java中的類型轉(zhuǎn)換 / 75
5.5 抽象類和抽象方法/ 76
測(cè)試17 使用抽象類封裝公共邏輯 / 78
第6章 數(shù)據(jù)結(jié)構(gòu)、數(shù)組和字符串/ 80
6.1 算法和數(shù)據(jù)結(jié)構(gòu)/ 80
6.1.1 算 法/ 80
6.1.2 數(shù)據(jù)結(jié)構(gòu)/ 83
6.2 數(shù) 組/ 85
6.2.1 創(chuàng)建和初始化數(shù)組/ 86
6.2.2 訪問(wèn)數(shù)組元素/ 86
測(cè)試18 尋找數(shù)組中最小的數(shù)字 / 89
測(cè)試19 使用帶運(yùn)算符的數(shù)組計(jì)算器 / 89
6.3 二維數(shù)組/ 90
6.4 排 序/ 94
6.4.1 插入排序/ 95
6.4.2 創(chuàng)建 ArrayList并添加元素/ 98
6.4.3 更換和刪除元素 / 99
6.5 迭代器 / 101
測(cè)試20 運(yùn)用 ArrayList103
6.6 字符串 104
6.6.1 創(chuàng)建字符串 / 104
6.6.2 字符串串聯(lián) / 104
6.6.3 字符串長(zhǎng)度 / 105
測(cè)試21 輸入字符串并輸出其長(zhǎng)度 / 106
測(cè)試22 計(jì)算器 / 106
6.6.4 字符串類型轉(zhuǎn)換 / 107
6.6.5 比較兩個(gè)字符串 / 107
6.6.6 字符串拼接 / 108
測(cè)試23 刪除字符串中的重復(fù)字符 / 109
第7章 集合框架和泛型/ 111
7.1 用Java讀取文件 / 111
3Java編程項(xiàng)目實(shí)戰(zhàn)
7.1.1 CSV 文件 / 111
7.1.2 Java讀取文件的基本原理 / 112
7.1.3 構(gòu)建 CSV 閱讀器/ 113
7.2 數(shù) 組 / 115
測(cè)試24 使用具有初始容量的數(shù)組從 CSV 文件讀取用戶數(shù)據(jù) 117
7.3 Java集合框架 / 117
7.3.1 概 述 / 117
7.3.2 向 量 / 119
測(cè)試25 使用向量讀取真實(shí)數(shù)據(jù)集 / 121
7.3.3 迭代集合 / 121
測(cè)試26 迭代用戶向量 / 122
7.3.4 哈希表(Hashtable)/ 123
7.4 泛 型 / 125
7.4.1 泛型概述 / 125
7.4.2 泛型原理 / 126
7.4.3 泛型使用 / 127
7.5 比 較 / 130
7.6 排 序 / 132
7.6.1 冒泡排序 / 132
7.6.2 合并排序 / 132
測(cè)試27 對(duì)用戶進(jìn)行排序 / 134
7.7 數(shù)據(jù)結(jié)構(gòu) / 135
7.7.1 列 表 / 135
7.7.2 數(shù)組列表 / 135
7.7.3 鏈 表 / 135
7.7.4 映 射 / 136
7.7.5 哈希圖 / 137
7.7.6 樹 圖 / 137
7.7.7 鏈?zhǔn)焦D / 137
7.7.8 集 合 / 138
7.8 隊(duì) 列 / 140
第8章 高級(jí)數(shù)據(jù)結(jié)構(gòu)/ 144
8.1 鏈 表 / 144
8.1.1 鏈表的優(yōu)勢(shì) / 144
測(cè)試28 用Java創(chuàng)建自定義鏈表 / 147
8.1.2 鏈表的缺點(diǎn) / 148
8.2 二叉搜索樹 / 148
測(cè)試29 實(shí)現(xiàn) BinarySearchTree類中的方法,在 BST 中找到最大值和最小值 / 151
8.3 枚 舉 / 151
測(cè)試30 使用枚舉來(lái)保存學(xué)校院系的詳細(xì)信息 / 153
測(cè)試31 編寫一個(gè)可以接收值的應(yīng)用程序,實(shí)現(xiàn)反向查找 / 153
8.4 hashCode()和equals()/ 153
第9章 異常處理/ 159
9.1 異常概述 / 159
9.2 錯(cuò)誤與異常 / 160
測(cè)試32 處理數(shù)字輸入中的錯(cuò)誤 / 161
9.3 Java集成環(huán)境(IDE)處理異常 / 162
9.4 異常源 / 169
9.4.1 已檢查異常 / 170
9.4.2 未檢查異常 / 171
9.5 異常的層次結(jié)構(gòu) / 173
9.6 引發(fā)異常和自定義異常 / 174
測(cè)試33 用Java編寫自定義異常 / 177
9.7 異常機(jī)制 / 177
9.8 多異常類型 / 182
附錄 測(cè)試題程序/ 184