知识点全
本书紧密围绕Java语言展开讲解,具有很强的逻辑性和系统性。
实例丰富
书中各实例均经过作者精心设计和挑选,它们都是根据作者在实际开发中的经验总结而来的,涵盖了在实际开发中所遇到的各种问题。
应用广泛
对于精选案例,给出了详细步骤,结构清晰简明,分析深入浅出,而且有些程序能够直接在项目中使用,避免读者进行重复开发。
基于理论,注重实践
在讲述过程中,不只是介绍理论知识,而且在合适位置安排综合应用实例,或者小型应用程序,将理论知识应用到实践中,来加强读者的实际应用能力,巩固所学的相关知识。
Java是当今世界*重要、使用*广泛的计算机语言之一。全球有超过百万的开发者在用Java进行各种程序的开发。用Java编写的程序因为其硬件环境无关性而越来越受到人们的青睐。
本书共分19章,主要内容包括Java语言的发展、特点、运行环境、数据类型、流程控制、变量常量、运算符与表达式、注释、选择语句、循环语句、跳转语句、数组和排序、类和对象、静态类、继承、枚举、接口、集合类、泛型、字符串、日期和时间处理、数学类、随机类和异常类。在应用方面介绍了文件和目录操作、多线程、反射机制、网络编程、数据库编程以及图形界面设计。最后介绍了常用的几种设计模式在Java中的实现,如单例模式、工厂模式、适配器模式和状态模式等。
本书既可以作为高等院校计算机相关专业Java语言程序设计课程的教材,也可以作为Java程序设计的培训教材,还可以作为自学者的参考书。
第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的累加结果。
……
目录
第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