本书主要以零基础的读者角度出发,通过简单易懂的语言、图文并茂、知识点由浅入深的讲解,案例充足和课后习题巩固。使得读者在循环渐进过程中掌握Java语言编程的知识,从提升自身的实际开发能力。全书共分为4篇11章,分别为基础篇、高级篇、数据结构与算法篇、实战篇。内容主要包括Java环境搭建,Java变量命令规范,Java中的各类数据类型,流程控制语句,继承,多态,类与方法,高级特征,面向常用类,异常处理,Lambda表达式,泛型,栈,堆,链表,树,查找算法,排序算法,递归算法和五子棋对战项目等。本书所有章节都附有对应的课后习题,所有习题都带有完整的源码答案,快速的帮助读者提高编码能力,提升对问题的解决和思考能力。
本书是粤嵌公司策划并组织编写的产学合作协同育人系列教材之一,实践性较强,涵盖了高校相关专业方向的主要课程。本书作者具有企业开发实战经验和行业培训的经验,也为高校学生讲授相关的课程,理论结合实践。
张毅恒。广州粤嵌通信科技股份有限公司人工智能学科负责人。系统架构师、高级工程师。5年多研发经验,8年多技术讲师经验。曾在纳斯达克上市公司任职,负责手机与平板电脑Android系统的移植工作;曾参与车联网系统的研发,负责整个系统的架构与搭建工作。从Linux系统移植、后台服务器程序开发,到Android应用开发、H5微信小程序,到机器学习与数据分析,都有丰富的实践和教学工作经验。
第 1章 搭建Java开发环境 2
1.1 Java概述 2
1.1.1 Java语言的产生 2
1.1.2 Java语言的发展 3
1.2 Java语言的特点 5
1.2.1 面向对象 5
1.2.2 可移植性 5
1.2.3 稳健性和安全性 5
1.2.4 多线程和动态性 5
1.3 Java程序工作原理 6
1.3.1 编译型语言与解释型语言 6
1.3.2 Java程序执行机制 6
1.4 搭建JDK环境 6
1.5 配置环境变量 10
1.6 “第 一个”Java程序 14
1.7 集成开发环境Eclipse 16
1.8 习题 20
第 2章 Java基本程序设计结构 21
2.1 注释 22
2.1.1 单行注释 22
2.1.2 多行注释 22
2.1.3 文档注释 22
2.2 标识符 24
2.3 关键字 24
2.3.1 类和接口的关键字 25
2.3.2 数据类型的关键字 25
2.3.3 流程控制的关键字 26
2.3.4 类成员访问权限的关键字 26
2.3.5 类实例的关键字 26
2.3.6 异常处理相关的关键字 27
2.3.7 其他关键字 27
2.4 数据类型 27
2.4.1 Java的基本数据类型 28
2.4.2 Java数据类型的转换 29
2.5 变量 30
2.6 常量 32
2.7 运算符 33
2.7.1 算术运算符 33
2.7.2 赋值运算符 34
2.7.3 关系运算符 34
2.7.4 逻辑运算符 34
2.7.5 位运算符 34
2.7.6 位移运算符 35
2.7.7 其他运算符 35
2.7.8 运算符的优先级 35
2.8 流程控制结构 36
2.8.1 分支结构 36
2.8.3 循环结构 39
2.9 数组 45
2.9.1 数组的声明 45
2.9.2 数组的初始化 45
2.9.3 数组的访问 46
2.9.4 数组的遍历 46
2.9.5 二维数组 48
2.10 习题 49
第3章 Java面向对象入门结构 52
3.1 面向对象思想 52
3.2 类与对象 54
3.3 属性 55
3.4 方法 56
3.5 方法重载 58
3.6 构造器 59
3.6.1 构造器重载 60
3.6.2 默认构造器 60
3.7 初始化块 61
3.7.1 普通初始化块 61
3.7.2 静态初始化块 63
3.8 内部类 63
3.8.1 成员内部类 64
3.8.2 局部内部类 65
3.8.3 静态内部类 65
3.8.4 匿名内部类 66
3.9 this的使用 67
3.9.1 引用当前类的属性 68
3.9.2 返回类自身的引用 68
3.9.3 调用构造器 69
3.9.4 用作方法的参数 70
3.10 链式调用 71
3.11 习题 71
第4章 Java面向对象三大特征 75
4.1 封装 75
4.1.1 private、protected、public、默认 76
4.1.2 package和import 77
4.2 继承 79
4.2.1 继承的定义 80
4.2.2 方法的重写 82
4.2.3 super关键字的使用 83
4.2.4 方法调用的优先级 87
4.3 多态 89
4.3.1 多态的定义 89
4.3.2 多态的特征 91
4.3.3 instanceof的使用 93
4.3.4 静态绑定和动态绑定 96
4.4 习题 97
第5章 Java面向对象高级特征 100
5.1 toString()方法 100
5.2 equals()方法 102
5.3 static关键字 105
5.4 final关键字 105
5.4.1 final类 105
5.4.2 final方法 106
5.4.3 final属性 107
5.4.4 final参数 108
5.4.5 final变量 108
5.4.6 同时使用static和final 109
5.5 抽象 110
5.6 接口 112
5.6.1 接口的定义 112
5.6.2 接口的实现 113
5.6.3 一个类实现多个接口 114
5.6.4 一个接口继承多个接口 115
5.7 方法回调 116
5.8 单例 117
5.8.1 懒汉式单例 117
5.8.2 饿汉式单例 118
5.9 习题 119
第6章 Python面向对象 123
6.1 数组与Arrays类 124
6.2 Object类 124
6.3 基本数据类型的包装类 125
6.3.1 基本数据类型与包装类的转换 125
6.3.2 基本数据类型与字符串类型的转换 126
6.4 Math类 126
6.4.1 无理数的写法 126
6.4.2 三角函数的方法 126
6.4.3 取整运算的方法 127
6.4.4 乘方、开方、对数的方法 127
6.4.5 其他方法 127
6.5 日期和时间相关的类 127
6.5.1 Date类 128
6.5.2 Calendar类 129
6.5.3 SimpleDateFormat类 131
6.6 字符串操作相关的类 132
6.6.1 String类 133
6.6.2 字节数组、字符数组与字符串的转换 134
6.6.3 StringBuffer和StringBuilder类 135
6.7 随机类 136
6.8 正则表达式 137
6.8.1 Pattern与Matcher类 137
6.8.2 元字符 138
6.8.3 提取匹配的关键字 140
6.8.4 正则字符串操作 141
6.9 习题 141
第7章 异常处理 146
7.1 异常概述 146
7.2 异常处理相关语法 147
7.2.1 try和catch代码块 147
7.2.2 多个catch代码块 147
7.2.3 错误和异常 149
7.2.4 Exception类 149
7.2.5 finally代码块 150
7.2.6 throws抛出异常 151
7.3 异常分类 153
7.4 捕获异常 153
7.5 抛出异常 154
7.6 习题 156
第8章 Lambda表达式 160
8.1 值参数化与行为参数化 160
8.1.1 值参数化 160
8.1.2 行为参数化 163
8.1.3 引入Lambda 165
8.1.4 值参数化与行为参数化的比较 166
8.2 Lambda表达式 167
8.3 函数式接口 168
8.3.1 基本概念 168
8.3.2 JDK 8的函数式接口 169
8.3.3 参数的类型推断 172
8.3.4 多个参数的运算 172
8.4 Lambda表达式的其他特性 174
8.4.1 使用局部变量 174
8.4.2 方法引用 176
8.4.3 构造器引用 176
8.4.4 Lambda表达式与匿名内部类的区别 176
8.5 习题 177
第9章 数据结构 180
9.1 数组 180
9.2 栈 181
9.3 队列 185
9.4 链表 193
9.5 树 200
9.6 堆 207
9.7 散列表 213
9.8 图 216
9.9 习题 219
第 10章 算法 221
10.1 查找算法 221
10.1.1 顺序查找法 221
10.1.2 二分查找法 222
10.2 排序算法 224
10.2.1 冒泡排序法 225
10.2.2 选择排序法 229
10.2.3 插入排序法 232
10.2.4 希尔排序法 236
10.2.5 快速排序法 239
10.2.6 归并排序法 242
10.2.7 堆排序法 245
10.2.8 排序算法衡量指标 249
10.3 递归算法 249
10.4 习题 252
第 11章 项目开发与实现——五子棋程序 256
11.1 游戏说明 256
11.1.1 游戏规则 256
11.1.2 编程注意事项 256
11.1.3 计算机下棋的策略 257
11.2 建立模型 257
11.3 输出棋盘 258
11.4 放置棋子 260
11.5 计算机下棋策略 264
11.6 读取用户下棋的坐标 265
11.7 判断赢棋条件 267
11.8 程序主流程 269