前言
Java是當今非常流行的一種面向對象編程語言。該語言由Sun公司推出,具有跨平臺、可移植、分布式、簡單、可擴展等諸多特性。現在的Java不僅僅表示一種程序語言,更是一個軟件開發平臺,目前已經演化出J2SE、J2EE和J2ME三個版本。憑借其易學易用、功能強大等特點,Java可以進行桌面應用、Web應用、分布式系統及嵌入式系統等應用程序開發,并且在信息技術、科學研究等領域都得到了廣泛的應用。
隨著Java8發布,Java平臺又增加了很多新的特性,越來越多的開發人員嘗試使用Java8中的新特性,在Java程序中使用這些新特性,以提高代碼質量,提升工作效率。為了使廣大學生和工作者能真正掌握Java8程序設計技術,領悟Java8程序設計的快樂,享受到動態語言帶來的在提高生產效率方面的好處,作者根據多年的程序開發和Java授課經驗,精心編寫了本書。本書不單純從知識角度來講解Java8程序設計,而是從實踐和解決開發問題的角度來介紹Java語言。在編寫的過程中,注重把Java語言中的重點、難點、要點和編程中常見的問題融合在一起進行講解。
本書編寫思路清晰、內容翔實、案例實用,詳細介紹使用Java程序設計的方方面面。本書既可作為計算機軟件以及其他計算機相關專業的教材,也可以作為Java編程人員的參考書。
本書內容
全書共分19章,主要內容如下。
第1章認識Java。本章主要介紹Java語言的基礎知識,包括Java的概念、開發環境的搭建、程序的編譯和執行、Java程序的重要組成要素,以及Eclipse工具的使用等內容。
第2章Java程序設計基礎。本章主要介紹Java的基礎語法,包括Java程序中的基本數據類型、變量、常量、運算符和類型轉換等相關知識。
第3章流程控制語句。本章首先簡單介紹算法的描述方式,重點介紹Java條件語句和循環語句的使用,包括if、switch、for、while、do…while和foreach等。
第4章字符串處理。本章主要介紹Java中的字符串處理,包括String類字符串、StringBuffer類字符串和正則表達式等內容。
第5章數字和日期處理。本章主要介紹Math類、Random類、Date類、BigInteger類以及DateFormat類等。
第6章Java內置包裝類。本章主要介紹Java提供的各種包裝類,包括Object類、Integer類、Number類、Character類以及System類的使用等內容。
第7章數組處理。本章詳細介紹Java中數組的創建、初始化和各種處理,如獲取數組長度、查找數組元素和數組排序等。
第8章類和對象。本章主要介紹Java中類的應用,包括定義類、創建類的對象、作用域修飾符、構造方法、析構方法以及包的使用等內容。
第9章繼承和多態。本章主要介紹Java中繼承的語法和實現,以及多態機制的應用。同時講解抽象類和接口的實現及區別,最后簡單介紹內部類和匿名類的使用。
第10章Java異常處理。本章主要介紹Java中異常處理語句的使用、異常的聲明和拋出,以及自定義異常類。
第11章集合、泛型和枚舉。本章主要介紹Java中的集合處理,包括集合相關接口、集合基類Collection、List集合、Set集合、Map集合和泛型的使用。最后簡單介紹枚舉的使用。
第12章Java反射機制。本章主要介紹Java中Class類與Java反射的基本用法。
第13章Java輸入/輸出流。本章主要介紹Java中流的使用,包括流的概念和分類、系統流的使用、輸入流和輸出流的類結構、字節流和字符流的應用。
第14章Java多線程編程。本章主要介紹線程類的實現、線程的生命周期、停止線程、暫停線程和線程的優先級等內容。
第15章JDBC數據庫編程。本章主要介紹使用JDBC訪問數據庫的內容,包括JDBC簡介、驅動類型、連接數據庫的步驟、數據操作對象以及如何遍歷查詢結果等。
第16章Java網絡編程。本章主要介紹使用Java如何進行TCP通信、UDP通信和URL通信。
第17章Swing界面編程基礎。本章主要介紹使用Swing設計圖形界面的基礎組件,包括創建窗口和面板、布局管理器的使用、按鈕、單行和多行文本框、單選按鈕和復選框,最后介紹了事件的監聽。
第18章Swing高級組件。本章主要介紹Swing中的滑塊、進度條、菜單欄、工具欄、文件和顏色選擇器、對話框組件、表格、樹和選項卡等組件。
第19章Java設計模式。本章首先介紹設計模式的概念和分類,然后介紹常用的設計模式,包括單例模式、簡單工廠模式、工廠方法模式、抽象工廠模式、適配器模式、外觀模式、觀察者模式和狀態模式。
本書特色
書中大量內容來自真實的程序范例,使讀者更容易掌握Java程序設計的開發。本書難度適中,內容由淺入深,實用性強,覆蓋面廣,條理清晰。
知識點全
本書緊緊圍繞Java語言展開講解,具有很強的邏輯性和系統性。
實例豐富
書中各實例均經過作者精心設計和挑選,它們都是作者根據實際開發中的經驗總結而來的,涵蓋了在實際開發中所遇到的各種問題。
應用廣泛
對于精選案例,給出了詳細步驟,結構清晰簡明,分析深入淺出,而且有些程序能夠直接在項目中使用,避免讀者進行二次開發。
基于理論,注重實踐
在講述過程中,不僅僅只介紹理論知識,而且在合適位置安排了綜合應用實例,或者小型應用程序,將理論應用到實踐當中,加強讀者實際應用能力,鞏固開發基礎知識。
貼心的提示
為了便于讀者閱讀,全書還穿插著一些提示、注意、技巧等小貼士,體例約定如下。
提示:通常是一些貼心的提醒,讓讀者加深印象或提供建議,或者解決問題的方法。
注意:提出學習過程中需要特別注意的一些知識點和內容,或者相關信息。
技巧:通過簡短的文字,指出知識點在應用時的一些小竅門。
讀者對象
本書既適合作為軟件開發入門者的自學用書,也適合作為高等院校相關專業的教學參考書,還可供開發人員查閱、參考。
■Java語言開發入門者。
■Java語言的初學者以及在校學生。
■各大中專院校在校學生和相關授課老師。
■準備從事與Java語言或J2EE技術相關工作的人員。
本書由孟麗絲、張雪編著,參與本書編寫及設計工作的還有鄭志榮、侯艷書、劉利利、侯政洪、肖進、李海燕、侯政云、祝紅濤、崔再喜、賀春雷等,在此表示感謝。在本書的編寫過程中,我們力求精益求精,但難免存在一些不足之處,敬請廣大讀者批評指正。
編者
目錄
第1 章 認識Java
1.1 Java 簡介 ………………………………2
1.1.1 什么是Java 語言 ………………… 2
1.1.2 Java 語言的特點 ………………… 3
1.1.3 學習Java 的最佳途徑 …………… 4
1.2 高手帶你做——搭建Java 開發環境 …5
1.3 高手帶你做——配置環境變量 …………7
1.4 高手帶你做——輸出“你好Java” ……9
1.4.1 編寫Java 源程序 ………………… 9
1.4.2 編譯和運行 …………………… 10
1.4.3 編譯常見錯誤解決方法 ……… 11
1.4.4 Java 程序運行流程 …………… 11
1.5 Java 程序的基本要素 ……………… 12
1.5.1 標識符 ………………………… 13
1.5.2 關鍵字 ………………………… 13
1.5.3 注釋 …………………………… 14
1.5.4 修飾符 ………………………… 15
1.5.5 語句和塊 ……………………… 15
1.5.6 類 ……………………………… 15
1.5.7 方法 …………………………… 15
1.5.8 main() 方法 …………………… 15
1.6 Java 推薦編程規范 ………………… 16
1.7 高手帶你做——安裝Eclipse ……… 16
1.8 高手帶你做——創建第一個Java
項目 ………………………………… 19
1.9 高手帶你做——修改Eclipse 編輯器
字體大小 …………………………… 23
1.10 高手帶你做——Eclipse 調試代碼 … 24
1.11 成長任務 …………………………… 26
第2 章 Java 程序設計基礎
2.1 常量 ………………………………… 28
2.1.1 常量值 ………………………… 28
2.1.2 定義常量 ……………………… 29
2.2 變量 ………………………………… 29
2.2.1 聲明變量 ……………………… 30
2.2.2 變量賦值 ……………………… 30
2.2.3 變量的作用域 ………………… 30
2.3 數據類型 …………………………… 32
2.3.1 數據類型的分類 ……………… 33
2.3.2 整數類型 ……………………… 33
2.3.3 浮點類型 ……………………… 34
2.3.4 布爾類型 ……………………… 36
2.3.5 字符類型 ……………………… 36
2.4 基本運算符 ………………………… 37
2.4.1 算術運算符 …………………… 37
2.4.2 賦值運算符 …………………… 39
2.4.3 邏輯運算符 …………………… 41
2.4.4 關系運算符 …………………… 41
2.4.5 自增和自減運算符 …………… 43
2.5 位運算符 …………………………… 45
2.5.1 位邏輯運算符 ………………… 45
2.5.2 位移運算符 …………………… 47
2.5.3 復合位賦值運算符 …………… 48
2.6 高手帶你做——認識條件運算符 …… 48
2.7 運算符優先級 ……………………… 49
2.8 類型轉換 …………………………… 50
2.8.1 隱式轉換 ……………………… 51
2.8.2 顯式轉換 ……………………… 51
2.9 成長任務 …………………………… 52
第3 章 流程控制語句
3.1 了解算法 …………………………… 54
3.1.1 算法的定義 …………………… 54
3.1.2 高手帶你做——使用算法求1~4 的和 ……………………… 54
3.1.3 算法描述方式 ………………… 55
3.2 順序結構 …………………………… 58
3.2.1 語句編寫方式 ………………… 58
3.2.2 空語句 ………………………… 59
3.2.3 表達式語句 …………………… 59
3.2.4 復合語句 ……………………… 59
3.3 if 條件語句 …………………………… 60
3.3.1 if 語句語法 …………………… 60
3.3.2 雙條件if 語句 ………………… 62
3.3.3 多條件if 語句 ………………… 63
3.3.4 高手帶你做——嵌套if 的使用 65
3.4 switch 條件語句 ……………………… 67
3.4.1 switch 語句格式 ……………… 67
3.4.2 if 語句和switch 語句的區別 … 69
3.4.3 高手帶你做——根據出生日期判斷星座 …………………… 70
3.5 循環語句 …………………………… 71
3.5.1 while 語句 ……………………… 72
3.5.2 do…while 語句 ………………… 72
3.5.3 for 語句 ………………………… 74
3.5.4 高手帶你做——九九乘法口訣表 … 77
3.5.5 foreach 語句 …………………… 78
3.6 跳轉語句 …………………………… 79
3.6.1 return 語句 ……………………… 79
3.6.2 break 語句 ……………………… 80
3.6.3 continue 語句 …………………… 84
3.7 高手帶你做——判斷閏年和
輸出某月的天數 …………………… 86
3.8 高手帶你做——輸出楊輝三角形 …… 87
3.9 成長任務 …………………………… 89
第4 章 字符串處理
4.1 定義字符串 ………………………… 92
4.1.1 直接定義字符串 ……………… 92
4.1.2 使用String 類定義 …………… 92
4.2 連接字符串 ………………………… 93
4.2.1 使用連接運算符 ……………… 93
4.2.2 使用concat() 方法 …………… 94
4.2.3 高手帶你做——連接其他類型數據 ……………………… 95
4.3 基本處理 …………………………… 96
4.3.1 獲取字符串長度 ……………… 96
4.3.2 轉換大小寫 …………………… 97
4.3.3 去除空格 ……………………… 98
4.3.4 提取子字符串 ………………… 98
4.3.5 分割字符串 …………………… 100
4.3.6 高手帶你做——截取新聞標題 … 100
4.4 替換字符串 …………………………102
4.4.1 replace() 方法 ………………… 102
4.4.2 replaceFirst() 方法 ……………… 102
4.4.3 replaceAll() 方法 ……………… 103
4.4.4 高手帶你做——批量替換字符串 …………………………… 103
4.5 比較字符串 …………………………104
4.5.1 equals() 方法 …………………… 104
4.5.2 equalsIgnoreCase() 方法 ……… 105
4.5.3 compareTo() 方法 ……………… 106
4.6 查找字符串 …………………………107
4.6.1 根據字符查找 ………………… 107
4.6.2 根據索引查找 ………………… 108
4.6.3 高手帶你做——校驗文件名和郵箱地址 …………………… 109
4.7 高手帶你做——加密和解密 …………110
4.8 StringBuffer 類 ………………………111
4.8.1 創建StringBuffer 類 …………… 112
4.8.2 追加字符串 …………………… 112
4.8.3 替換字符 ……………………… 114
4.8.4 反轉字符串 …………………… 114
4.8.5 刪除字符串 …………………… 114
4.8.6 高手帶你做——替換特殊符號 115
4.9 正則表達式 …………………………116
4.9.1 元字符 ………………………… 116
4.9.2 限定符 ………………………… 117
4.9.3 高手帶你做——使用正則
表達式驗證電話號碼 ………… 117
4.9.4 高手帶你做——驗證IP 地址是否合法 ……………………… 118
4.10 成長任務 ……………………………120
第5 章 數字和日期處理
5.1 數學處理類 …………………………122
5.1.1 靜態常量 ……………………… 122
5.1.2 求最大值、最小值和絕對值 … 122
5.1.3 求整運算 ……………………… 123
5.1.4 三角函數運算 ………………… 124
5.1.5 指數運算 ……………………… 125
5.2 高手帶你做——生成隨機數 …………125
5.3 高手帶你做——數字格式化 …………128
5.4 大數字運算 …………………………129
5.4.1 BigInteger 類 …………………… 129
5.4.2 BigDecimal 類 ………………… 131
5.5 日期處理類 …………………………133
5.5.1 Date 類 ………………………… 133
5.5.2 Calendar 類 …………………… 135
5.6 日期格式化 …………………………138
5.6.1 DateFormat 類 ………………… 139
5.6.2 SimpleDateFormat 類 ………… 140
5.7 高手帶你做——計算課程結束日期 … 142
5.8 高手帶你做——實現日期查詢功能 … 144
5.9 成長任務 ……………………………149
第6 章 Java 內置包裝類
6.1 Object 類 ………………………………152
6.2 Integer 類 ……………………………154
6.3 Float 類 ………………………………156
6.4 Double 類 ……………………………158
6.5 Number 類 ……………………………159
6.6 Character 類 …………………………160
6.7 Boolean 類 ……………………………163
6.8 Byte 類 ………………………………164
6.9 System 類 ……………………………165
6.9.1 System 類的成員變量 ………… 166
6.9.2 System 類的成員方法 ………… 167
6.10 成長任務 ……………………………169
第7 章 數組處理
7.1 數組簡介 ……………………………171
7.2 一維數組 ……………………………171
7.2.1 創建一維數組 ………………… 171
7.2.2 分配空間 ……………………… 172
7.2.3 初始化一維數組 ……………… 173
7.2.4 獲取單個元素 ………………… 174
7.2.5 獲取全部元素 ………………… 175
7.2.6 高手帶你做——統計商品信息 175
7.3 二維數組 ……………………………176
7.3.1 創建二維數組 ………………… 177
7.3.2 初始化二維數組 ……………… 177
7.3.3 獲取單個元素 ………………… 177
7.3.4 獲取全部元素 ………………… 178
7.3.5 獲取整行元素 ………………… 179
7.3.6 獲取整列元素 ………………… 180
7.4 多維數組 ……………………………181
7.5 數組的常用處理 ……………………181
7.5.1 比較數組 ……………………… 182
7.5.2 填充數組 ……………………… 182
7.5.3 查找數組 ……………………… 183
7.6 復制數組 ……………………………185
7.6.1 使用copyOf() 方法和copyOfRange() 方法 …………… 185
7.6.2 使用arraycopy() 方法 ………… 187
7.6.3 使用clone() 方法 ……………… 189
7.7 數組排序 ……………………………190
7.7.1 內置排序法 …………………… 190
7.7.2 冒泡排序法 …………………… 191
7.7.3 快速排序法 …………………… 192
7.7.4 選擇排序法 …………………… 194
7.7.5 直接插入法 …………………… 195
7.8 高手帶你做——實現商品信息
查詢功能 ……………………………196
7.9 成長任務 ……………………………197
第8 章 類和對象
8.1 面向對象概述 ………………………200
8.1.1 對象的概念 …………………… 200
8.1.2 面向對象的三大核心特性 …… 200
8.2 高手帶你做——認識類和對象 ………202
8.3 使用類 ………………………………203
8.3.1 定義類 ………………………… 203
8.3.2 屬性 …………………………… 204
8.3.3 高手帶你做——創建學生類 … 205
8.3.4 方法 …………………………… 206
8.3.5 this 關鍵字 ……………………… 208
8.4 對象 …………………………………209
8.4.1 對象的創建 …………………… 209
8.4.2 訪問對象的屬性和行為 ……… 212
8.4.3 對象的銷毀 …………………… 212
8.4.4 高手帶你做——用戶修改密碼 213
8.5 作用域修飾符 ………………………215
8.5.1 訪問控制修飾符 ……………… 215
8.5.2 static 靜態修飾符 ……………… 217
8.5.3 final 修飾符 …………………… 221
8.6 特殊方法 ……………………………222
8.6.1 main() 方法 …………………… 222
8.6.2 方法的可變參數 ……………… 224
8.6.3 構造方法 ……………………… 225
8.6.4 高手帶你做——查看個人信息 227
8.6.5 析構方法 ……………………… 228
8.7 包 ……………………………………230
8.7.1 系統包 ………………………… 230
8.7.2 自定義包 ……………………… 231
8.8 高手帶你做——使用自定義包 ………231
8.9 成長任務 ……………………………232
第9 章 繼承和多態
9.1 類的封裝 ……………………………234
9.2 高手帶你做——封裝圖書信息類 ……235
9.3 類的繼承 ……………………………236
9.3.1 簡單繼承 ……………………… 237
9.3.2 單繼承 ………………………… 239
9.3.3 super 關鍵字 …………………… 240
9.3.4 對象類型轉換 ………………… 241
9.3.5 強制對象類型轉換 …………… 243
9.4 方法重載 ……………………………244
9.5 方法重寫 ……………………………245
9.6 多態 …………………………………247
9.7 抽象類 ………………………………249
9.8 接口 …………………………………251
9.8.1 定義接口 ……………………… 251
9.8.2 實現接口 ……………………… 252
9.9 高手帶你做——接口和抽象類
的區別 ………………………………254
9.9.1 基本語法區別 ………………… 254
9.9.2 設計思想區別 ………………… 255
9.10 內部類 ………………………………257
9.10.1 內部類簡介 …………………… 257
9.10.2 高手帶你做——
使用實例內部類 ……………… 258
9.10.3 高手帶你做——
使用靜態內部類……………… 261
9.10.4 高手帶你做——使用局部
內部類 ………………………… 262
9.11 匿名類 ………………………………263
9.12 高手帶你做——利用內部類實現
多重繼承 ……………………………265
9.13 成長任務 ……………………………266
第10 章 Java 異常處理
10.1 了解Java 中的異常 …………………268
10.1.1 異常簡介 ……………………… 268
10.1.2 高手帶你做——異常產生
的原因及使用原則 …………… 268
10.1.3 異常類型 ……………………… 269
10.2 異常處理語句 ………………………270
10.2.1 異常語句結構 ………………… 270
10.2.2 try catch 語句 ………………… 270
10.2.3 高手帶你做——計算
平均成績 ……………………… 272
10.2.4 try catch finally 語句 ………… 273
10.3 異常的聲明和拋出 …………………275
10.3.1 throws 聲明異常 ……………… 276
10.3.2 throw 拋出異常 ……………… 277
10.4 自定義異常 …………………………278
10.5 高手帶你做——驗證用戶
登錄信息 ……………………………280
10.6 高手帶你做——完善除法運算
的錯誤提示 …………………………282
10.7 成長任務 ……………………………285
第11 章 集合、泛型和枚舉
11.1 Java 集合類概述 ……………………288
11.1.1 集合中的接口 ………………… 288
11.1.2 接口實現類 …………………… 288
11.2 Collection 接口 ………………………289
11.3 List 集合 ……………………………291
11.3.1 ArrayList 類 …………………… 291
11.3.2 LinkedList 類 ………………… 294
11.4 Set 集合 ……………………………296
11.4.1 HashSet 類 …………………… 296
11.4.2 TreeSet 類 …………………… 297
11.5 Map 集合 ……………………………300
11.6 Collections 類 ………………………301
11.6.1 正向排序 ……………………… 301
11.6.2 逆向排序 ……………………… 302
11.6.3 復制 …………………………… 303
11.6.4 填充 …………………………… 305
11.7 泛型 …………………………………306
11.7.1 泛型集合 ……………………… 306
11.7.2 泛型類 ………………………… 308
11.7.3 泛型方法 ……………………… 309
11.7.4 泛型的高級用法 ……………… 310
11.8 高手帶你做——圖書查詢功能 ……311
11.9 枚舉 …………………………………314
11.9.1 聲明枚舉 ……………………… 314
11.9.2 枚舉類 ………………………… 315
11.9.3 為枚舉添加方法 ……………… 316
11.9.4 EnumMap 與EnumSet ……… 319
11.10 成長任務……………………………320
第12 章 Java 反射機制
12.1 Java 反射簡介 ………………………322
12.2 反射在類中的應用 …………………323
12.2.1 訪問構造方法 ………………… 323
12.2.2 訪問方法 ……………………… 326
12.2.3 訪問成員變量 ………………… 330
12.3 高手帶你做——在遠程方法中
使用反射機制 ………………………333
12.4 成長任務 ……………………………338
第3章流程控制語句
流程是人們生活中不可或缺的一部分,它表示人們每天都在按照一定的流程做事。比如出門搭車、上班、下班、搭車回家。這其中的步驟是有順序的。程序設計也需要有流程控制語句來完成用戶的要求,根據用戶的輸入決定程序要進入什么流程,即“做什么”以及“怎么做”等。
從結構化程序設計角度出發,程序有3種結構:順序結構、選擇結構和循環結構。若是在程序中沒有給出特別的執行目標,系統則默認自上而下一行一行地執行該程序,這類程序的結構就稱為順序結構。到目前為止,我們所編寫的程序都屬于順序結構。但是事物的發展往往不會遵循早就設想好的軌跡進行,因此,所設計的程序還需要能夠具有在不同的條件下處理不同問題以及當需要進行一些相同的重復操作時,如何能省時省力地解決問題的能力。
在本章中,我們將對Java程序中的上述3種流程結構進行學習。初學者應該對本章的每個小節進行仔細閱讀、思考,這樣才能達到事半功倍的效果。
本章學習要點
◎了解什么是算法及其描述方式
◎掌握Java中順序結構的使用
◎掌握if的單條件、多條件和嵌套用法
◎掌握switch語句的使用
◎掌握while和do…while的使用
◎掌握for語句的使用
◎掌握foreach語句的使用
◎熟悉return語句的用法
◎了解break語句和continue語句
掃一掃,下載本章視頻文件
3.1了解算法
在計算機中,算法是一個程序的“靈魂”,它決定了程序的實現方式、執行速度、解決問題的復雜程度以及“質量”的優劣等。
算法可以理解為由基本運算符和固定運算順序所構成的完整解決過程,也可以看成是為解決某類問題而設計的精確運算序列。例如,為了計算長方形的面積而使用的“長*寬”公式就是一個典型的算法。
3.1.1算法的定義
算法是解決問題“做什么”和“怎么做”的方法,它在廣義上早就融入我們的生活中。
例如,如果要做一道菜,就要先準備原料和配料,然后知道加工步驟開始加工,還要把握原料的多少以及加工的時間。即使是同樣的原料,由于制作步驟不同,也可以做出風味不同的佳肴。再比如,上班應該走哪條路、坐哪個班次的公交,如果起晚了、下雨天或者堵車應該怎么辦。
這兩個例子中就包含了算法,下面對它們進行簡單說明。
①在做菜的過程中,必須按一定的順序來進行,步驟缺一不可,順序錯了也不行,達不到預期的效果。
②在上班的過程中,我們需要根據實際情況實時做出各種判斷,并最終到達公司。
在日常生活中,由于已養成了習慣,所以人們并沒有意識到每件事都需要事先設計出“實現步驟”。例如,學習、做體操和買東西,事實上都是按照一定的規則進行的,只是人們不必每次都重復考慮它們而已。
因此,可以將算法看作是為解決一個問題而采取的方法和步驟,遇到問題時只需使用對應的算法即可。例如,一首歌曲的樂譜可以稱為該歌曲的算法,因為它指定了演奏該歌曲的每一個音符,按照它的規定就能演奏出該歌曲。
3.1.2高手帶你做——使用算法求1~4的和
對同一個問題,可以有不同的解題方法和步驟。有的方法只需進行很少的步驟,而有些方法則需要較多的步驟。一般來說,都希望采用方法簡單、運算步驟較少的方法。因此,為了有效地解決問題,不僅需要保證算法的正確性,還要考慮算法的質量。
【例3-1】
下面通過一個簡單的實例來說明算法的表示方式和解決思路。例如要計算1~4的累加,即1+2+3+4的結果。
首先我們用最簡單的方法來實現,具體步驟如下。
01先計算1+2的和,得到結果3。
02將第01步的結果3加上3,得到結果6。
03將第02步計算的結果6加上4得到最終結果,即10。
在本章之前,我們學習了變量以及運算符的使用。下面使用它們來解釋上面的過程,具體步驟如下。
01創建一個sum變量,用來保存每次的求和結果,初始值為0。
02創建一個i變量,用來表示當前的加數,初始值為1。
03執行sum=sum+i語句完成1的累加。
04執行i++語句使i遞增為2。
05執行sum=sum+i語句完成2的累加。
06執行i++語句使i遞增為3。
07執行sum=sum+i語句完成3的累加。
08執行i++語句使i遞增為4。
09執行sum=sum+i語句完成4的累加。
10輸出sum的值,即計算1~4累加的
結果。
使用上面的步驟(算法)可以正確計算1~4的累加值。但是它有一個明顯的缺點,就是步驟太煩瑣。如果要換成計算100的累加,步驟會顯得非常冗長和不易閱讀,且萬一某個步驟出錯,將導致整個結果不正確。
因此,這顯然不是一個好算法,也不可取,應該尋找更加通用的實現方法。
仔細觀察上面的步驟,會發現i++語句和sum=sum+i語句出現的次數最多。因此可以使用循環的方法,每循環一次就執行一次i++語句和sum=sum+i語句,一共循環4次。如果是求100的累加,就循環100次。
以下為使用循環改進后求X累加值的實現過程。
01創建一個sum變量,用來保存每次的累加結果,初始值為0。
02創建一個i變量,用來表示當前的加數,初始值為1。
03執行sum=sum+i語句完成計算i的累加值。
04執行i++語句使i遞增一次。
05判斷i是否小于或等于(或者不大于)X,如果是則轉到第03步繼續執行;如果不是,則向下執行。
06完成計算,輸出sum的值,即1~X的累加結果。
……