Java SE 9引进众多关键特性,这种特性危害Java服务平台基地的核心技术和API。很多旧的Java习惯用法已不必须,而新的特性,比如模块化设计,能够让程序流程更高效率。可是把握这种转变并不易,你必须出示迅速、更方便快捷的《写给大忙人的Java SE 9核心技术》。
应用模块简单化繁杂系统软件的开发设计。
转移运用以融入模块化设计的Java API和第三方模块。
应用新的JShell“载入-评定-复印”循环系统(REPL)随时随地检测你的编码。
应用lambda表达式更简约地表达个人行为。
应用Stream API将数据库管理生产线化并提升。
根据合作每日任务应用当代高并发编程。
充足应用结合、键入\輸出、正则表达式及其系统进程类改善的好几个API。
这书是经典书籍《Java核心技术》(Core Java)作者Cay S. Horstmann的全新升级大作,书中以重要的核心技术为核心点,以全局性高宽比提炼出言语精粹,以高浓、高认可度的方法对Java SE 9的新特性开展细腻解读。作者将其沉醉于Java很多年的远见卓识蕴含于书中,既扎扎实实遮盖Java编程的基本知识,又别具匠心地从Java 9以及关键的新特性之一——模块始于,领着用户一路探寻和实践Java 的众多新特性,例如JShell、结合类加工厂方式 、改善的Stream API、独享插口、HTTP/2、高并发编程中的提高一部分、全新升级的時间/时间API,及其开发语言在Java中的应用。“Impatient”系列产品书籍设计风格独特,除如数出自于高手之手外,更以文采轻轻松松、最易读通俗易懂、含有栩栩如生且可用以实践的范例程序流程(免费下载源代码后可立即运作)而渐长。这类亲自实践的授课方式,十分有利于用户加重对技术性的了解和把握。新手能用来参照新手入门;有开发设计工作经验者也能用来夯实基础编程关键专业知识,开拓创新地掌握技术性发展趋势现况与未来发展趋势。这书合适有一定Java开发设计工作经验的技术工程师或是系统架构师阅读文章,还可以做为Java新特性的参考手册。
目录
- 第1章 基本的编程结构 1
- 1.1 第一个程序 2
- 1.1.1 "Hello,World"程序解析 2
- 1.1.2 编译与运行Java程序 3
- 1.1.3 方法调用 5
- 1.1.4 JShell 7
- 1.2 基本类型 11
- 1.2.1 有符号整型 11
- 1.2.2 浮点类型 12
- 1.2.3 char型 13
- 1.2.4 布尔型 14
- 1.3 变量 14
- 1.3.1 变量的声明 14
- 1.3.2 名称 14
- 1.3.3 初始化 15
- 1.3.4 常量 15
- 1.4 算术操作 17
- 1.4.1 赋值 18
- 1.4.2 基本运算 18
- 1.4.3 数学方法 20
- 1.4.4 数字类型转换 21
- 1.4.5 关系操作符和逻辑操作符 22
- 1.4.6 大数 24
- 1.5 字符串 24
- 1.5.1 字符串的连接 25
- 1.5.2 子字符串 26
- 1.5.3 字符串比较 26
- 1.5.4 数字与字符串转换 28
- 1.5.5 String类API 29
- 1.5.6 编码点和编码单元 31
- 1.6 输入与输出 33
- 1.6.1 读取输入 33
- 1.6.2 格式化输出 35
- 1.7 控制流 37
- 1.7.1 分支 37
- 1.7.2 循环 39
- 1.7.3 跳出循环与继续循环 41
- 1.7.4 局部变量作用域 43
- 1.8 数组和数组列表 44
- 1.8.1 使用数组 44
- 1.8.2 构造数组 45
- 1.8.3 数组列表 47
- 1.8.4 基本类型包装类 48
- 1.8.5 增强的for循环 48
- 1.8.6 数组与数组列表的复制 49
- 1.8.7 数组算法 50
- 1.8.8 命令行参数 51
- 1.8.9 多维数组 52
- 1.9 功能分解 55
- 1.9.1 静态方法的声明与调用 55
- 1.9.2 数组参数与返回值 55
- 1.9.3 可变参数 56
- 练习 57
- 第2章 面向对象编程 61
- 2.1 使用对象 62
- 2.1.1 访问器方法和修改器方法 64
- 2.1.2 对象引用 65
- 2.2 实现类 67
- 2.2.1 实例变量 67
- 2.2.2 方法头 67
- 2.2.3 方法体 68
- 2.2.4 实例方法调用 69
- 2.2.5 this引用 69
- 2.2.6 值调用 70
- 2.3 构造对象 72
- 2.3.1 实现构造函数 72
- 2.3.2 重载 73
- 2.3.3 调用另一个构造函数 74
- 2.3.4 默认初始化 74
- 2.3.5 实例变量的初始化 75
- 2.3.6 final实例变量 76
- 2.3.7 无参构造函数 76
- 2.4 静态变量和方法 77
- 2.4.1 静态变量 77
- 2.4.2 静态常量 78
- 2.4.3 静态初始块 79
- 2.4.4 静态方法 80
- 2.4.5 工厂方法 81
- 2.5 包 82
- 2.5.1 包的声明 82
- 2.5.2 jar命令 83
- 2.5.3 类路径 84
- 2.5.4 包访问权限 86
- 2.5.5 导入类 87
- 2.5.6 静态导入 88
- 2.6 嵌套类 89
- 2.6.1 静态嵌套类 89
- 2.6.2 内部类 91
- 2.6.3 内部类的特殊语法 93
- 2.7 文档注释 95
- 2.7.1 插入注释 95
- 2.7.2 类注释 96
- 2.7.3 方法注释 97
- 2.7.4 变量注释 97
- 2.7.5 通用注释 98
- 2.7.6 链接 98
- 2.7.7 包、模块和概述注释 99
- 2.7.8 注释的提取 99
- 练习 100
- 第3章 接口和lambda表达式 105
- 3.1 接口 106
- 3.1.1 声明接口 106
- 3.1.2 实现接口 107
- 3.1.3 转换为接口类型 109
- 3.1.4 强制类型转换和instanceof操作符 109
- 3.1.5 继承接口 .110
- 3.1.6 实现多个接口 111
- 3.1.7 常量 111
- 3.2 静态方法、默认方法和私有方法 112
- 3.2.1 静态方法 112
- 3.2.2 默认方法 112
- 3.2.3 解决默认方法冲突的问题 113
- 3.2.4 私有方法 115
- 3.3 接口示例 115
- 3.3.1 Comparable接口 115
- 3.3.2 Comparator接口 117
- 3.3.3 Runnable接口 118
- 3.3.4 UI回调 119
- 3.4 lambda表达式 120
- 3.4.1 lambda表达式语法 121
- 3.4.2 函数式接口 122
- 3.5 方法引用和构造函数引用 123
- 3.5.1 方法引用 123
- 3.5.2 构造函数引用 125
- 3.6 使用lambda表达式 126
- 3.6.1 实现延迟执行 126
- 3.6.2 选择函数式接口 127
- 3.6.3 实现自己的函数式接口 129
- 3.7 lambda表达式和变量作用域 130
- 3.7.1 lambda表达式的作用域 130
- 3.7.2 访问来自闭合作用域的变量 131
- 3.8 高阶函数 133
- 3.8.1 返回函数的方法 134
- 3.8.2 修改函数的方法 134
- 3.8.3 Comparator方法 135
- 3.9 局部类和匿名类 136
- 3.9.1 局部类 136
- 3.9.2 匿名类 137
- 练习 . 138
- 第4章 继承与反射 143
- 4.1 继承一个类 144
- 4.1.1 父类与子类 144
- 4.1.2 定义和继承子类方法 145
- 4.1.3 方法覆盖 145
- 4.1.4 子类的构造 147
- 4.1.5 父类赋值 147
- 4.1.6 转换 148
- 4.1.7 final方法和类 149
- 4.1.8 抽象方法和类 149
- 4.1.9 受保护访问 150
- 4.1.10 匿名子类 151
- 4.1.11 继承和默认方法 152
- 4.1.12 带super的方法表达式 153
- 4.2 Object:终极父类 153
- 4.2.1 toString方法 154
- 4.2.2 equals方法 156
- 4.2.3 hashCode方法 159
- 4.2.4 克隆对象 160
- 4.3 枚举 163
- 4.3.1 枚举方法 164
- 4.3.2 构造函数、方法和域 165
- 4.3.3 实例的实现体 165
- 4.3.4 静态成员 166
- 4.3.5 switch枚举对象 167
- 4.4 运行时类型信息和资源 168
- 4.4.1 Class类 168
- 4.4.2 资源加载 172
- 4.4.3 类加载器 172
- 4.4.4 上下文类加载器 174
- 4.4.5 服务加载器 176
- 4.5 反射 178
- 4.5.1 枚举类成员 178
- 4.5.2 对象检查 179
- 4.5.3 方法调用 180
- 4.5.4 对象构造 181
- 4.5.5 JavaBeans 182
- 4.5.6 使用数组 183
- 4.5.7 代理 185
- 练习 . 187
- 第5章 异常、断言和日志处理 191
- 5.1 异常处理 192
- 5.1.1 异常抛出 192
- 5.1.2 异常继承层次 193
- 5.1.3 已检查异常的声明 195
- 5.1.4 异常捕获 196
- 5.1.5 try-with-resources语句 197
- 5.1.6 finally子句 199
- 5.1.7 异常重抛和链接 200
- 5.1.8 未捕获的异常和堆栈踪迹 202
- 5.1.9 Objects.requireNonNull方法 203
- 5.2 断言 204
- 5.2.1 使用断言 205
- 5.2.2 启用和禁用断言 205
- 5.3 记录日志 206
- 5.3.1 采用日志记录器 206
- 5.3.2 日志记录器 207
- 5.3.3 日志级别 207
- 5.3.4 其他日志记录方法 208
- 5.3.5 日志记录的配置项 210
- 5.3.6 日志处理器 211
- 5.3.7 过滤器和格式化器 214
- 练习 215
- 第6章 泛型编程 219
- 6.1 泛型类 220
- 6.2 泛型方法 221
- 6.3 类型限定 222
- 6.4 类型变异和通配符 223
- 6.4.1 子类型通配符 224
- 6.4.2 父类型通配符 225
- 6.4.3 带类型变量的通配符 226
- 6.4.4 无限定通配符 228
- 6.4.5 通配符捕获 228
- 6.5 Java虚拟机中的泛型 229
- 6.5.1 类型擦除 229
- 6.5.2 转换插入 230
- 6.5.3 桥方法 230
- 6.6 泛型约束 232
- 6.6.1 无基本类型参数 232
- 6.6.2 所有类型在运行时都是原始的 233
- 6.6.3 不能实例化类型变量 234
- 6.6.4 不能构造参数化类型的数组 236
- 6.6.5 静态上下文中的类类型变量不是有效的 237
- 6.6.6 类型擦除后的方法可能不冲突 238
- 6.6.7 异常与泛型 239
- 6.7 反射与泛型 240
- 6.7.1 Class<T>类 240
- 6.7.2 虚拟机中的泛型类型信息 242
- 练习 243
- 第7章 集合 249
- 7.1 集合框架概要 249
- 7.2 迭代器 254
- 7.3 set 256
- 7.4 map 257
- 7.5 其他集合 261
- 7.5.1 Properties 261
- 7.5.2 位组 262
- 7.5.3 枚举set和枚举map 264
- 7.5.4 栈、队列、双端队列、优先级队列 264
- 7.5.5 弱哈希映射表 266
- 7.6 视图 266
- 7.6.1 小集合 267
- 7.6.2 范围 268
- 7.6.3 不可修改的视图 268
- 练习 . 269
- 第8章 Stream. 273
- 8.1 从迭代到Stream操作 274
- 8.2 创建Stream 275
- 8.3 filter、map和flatMap方法 277
- 8.4 提取子流和组合流 279
- 8.5 其他流转换 280
- 8.6 简单归约 281
- 8.7 Optional类型 282
- 8.7.1 如何使用Optional类型值 282
- 8.7.2 如何不使用Optional类型值 284
- 8.7.3 创建Optional类型值 284
- 8.7.4 使用flatMap来组合可选值函数 285
- 8.7.5 将Optional转变为流 286
- 8.8 收集结果 287
- 8.9 将结果收集到map中 289
- 8.10 分组和分片 290
- 8.11 下游收集器 291
- 8.12 归约操作 294
- 8.13 基本类型流 296
- 8.14 并行流 297
- 练习 300
- 第9章 输入与输出处理 305
- 9.1 输入/输出流、Reader和Writer 306
- 9.1.1 获取流对象 306
- 9.1.2 读取字节 307
- 9.1.3 写字节 308
- 9.1.4 字符编码 308
- 9.1.5 文本输入 311
- 9.1.6 文本输出 313
- 9.1.7 读/写二进制数据 314
- 9.1.8 随机存取文件 315
- 9.1.9 内存映射文件 315
- 9.1.10 文件锁 316
- 9.2 路径、文件和目录 317
- 9.2.1 路径 317
- 9.2.2 创建文件和目录 319
- 9.2.3 复制、移动和删除文件 320
- 9.2.4 访问目录内容 321
- 9.2.5 ZIP文件系统 324
- 9.3 HTTP连接 325
- 9.3.1 URLConnection类和HttpURLConnection类 326
- 9.3.2 HTTP Client API 327
- 9.4 正则表达式 330
- 9.4.1 正则表达式概述 330
- 9.4.2 找到一个匹配 334
- 9.4.3 找到所有匹配 335
- 9.4.4 分组 336
- 9.4.5 以分隔符号分割 337
- 9.4.6 替换匹配结果 338
- 9.4.7 标记 339
- 9.5 序列化 339
- 9.5.1 Serializable接口 340
- 9.5.2 瞬态实例变量 342
- 9.5.3 readObject和writeObject方法 342
- 9.5.4 readResolve和writeReplace方法 343
- 9.5.5 版本化 345
- 练习 . 346
- 第10章 并发编程 351
- 10.1 并发任务 352
- 10.1.1 运行任务 352
- 10.1.2 Futu