标签分类 热门分类
当前位置:首页 > 程序设计电子书 > Java SE电子书网盘下载
写给大忙人的Java SE 9核心技术 写给大忙人的Java SE 9核心技术
javabook

javabook 提供上传

资源
24
粉丝
35
喜欢
358
评论
11

    写给大忙人的Java SE 9核心技术 PDF 影印超清版

    Java SE电子书
    • 发布时间:

    给大家带来的一篇关于Java SE相关的电子书资源,介绍了关于Java、SE、核心技术方面的内容,本书是由电子工业出版社出版,格式为PDF,资源大小232 MB,Cay S. Horstmann(凯·霍编写,目前豆瓣、亚马逊、当当、京东等电子书综合评分为:7.5,更多相关的学习资源可以参阅 程序设计电子书Java电子书、等栏目。

  • 写给大忙人的Java SE 9核心技术 PDF 下载
  • 下载地址:https://pan.baidu.com/s/1AV2xOgZ9auoh7r77-qtUi
  • 分享码:5wx5
  • 写给大忙人的Java SE 9核心技术 PDF

    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

    上一篇:程序员炼成记:从小白到工程师  下一篇:区块链轻松上手:原理、源码、搭建与应用

    展开 +

    收起 -

    Java SE 相关电子书
    关于Java SE的学习笔记
    网友NO.567742

    异步JavaScript编程中的Promise使用方法

    异步? 我在很多地方都看到过异步(Asynchronous)这个词,但在我还不是很理解这个概念的时候,却发现自己常常会被当做“已经很清楚”(* ̄? ̄)。 如果你也有类似的情况,没关系,搜索一下这个词,就可以得到大致的说明。在这里,我会对JavaScript的异步做一点额外解释。 看一下这段代码: var start = new Date();setTimeout(function(){ var end = new Date(); console.log("Time elapsed: ", end - start, "ms");}, 500);while (new Date - start 1000) {}; 这段代码运行后会得到类似Time elapsed: 1013ms这样的结果。 setTimeout()所设定的在未来500ms时执行的函数,实际等了比1000ms更多的时间后才执行。 要如何解释呢?调用setTimeout()时,一个延时事件被排入队列。然后,继续执行这之后的代码,以及更后边的代码,直到没有任何代码。没有任何代码后,JavaScript线程进入空闲,此时JavaScript执行引擎才去翻看队列,在队列中找到“应该触发”的事件,然后调用这个事件的处理器(函数)。处理器执行完成后,又再返回到队列,然后查看下一个事件。 单线程的JavaScript,就是这样通过队列,以事件循环的形式工作的。所以,前面的代码中,是用while将执行引擎拖在代码运行期间长达1000ms,而在全部代码运行完回到队列前,任何事件都不会触发。这就是JavaScript的异步机制。 JavaScript的异……

    网友NO.327801

    JSON在Javascript中的使用(eval和JSON.parse的区别)详细解析

    JSON 和XML比较 json的长度和xml比起来更加短小 json读取速度更快 json可以使用JavaScript的内置方法直接进行解析,转化成javascript对象,非常方便。 在Javascript使用eval将接送转化为json对象 var jsonData = '{"persons":{"name":"成龙","age":58},{"name":"吴京","age":33},"name":"甄子丹","age":44}';var jsonObj = eval('('+jsonData+')');//访问json对象数组的第一个对象的name属性console.log(jsonObj.persons[0].name); 在Javascript使用JSON.parse将接送转化为json对象 var jsonData = '{"persons":{"name":"成龙","age":58},{"name":"吴京","age":33},"name":"甄子丹","age":44}';var jsonObj = JSON.parse(jsonData);//访问json对象数组的第一个对象的name属性console.log(jsonObj.persons[0].name); 但是eval方法很不安全,例如: var jsonData = '{"persons":{"name":"成龙","age":window.alert(123)},{"name":"吴京","age":33},"name":"甄子丹","age":44}';var jsonObj = eval('('+jsonData+')');//访问json对象数组的第一个对象的name属性console.log(jsonObj.persons[0].name); 将age的值换成了Javascript代码,依然可以解析,加入有人恶意修改这个代码,那么就会造成严重后果。 但是JSON.parse不同 var jsonData = '{"persons":{"name":"成龙","age":window.alert(123)},{"name":"吴京","age":33},"name":"甄子丹","age":44}';var jsonObj = JSON.parse(jsonData);//访问json对象数组的第一个对象的name属性console.log(jsonObj.persons[0].name); 浏览器会检查……

    网友NO.581997

    大白话讲解JavaScript的Promise

    去年6月份, ES2015正式发布(也就是ES6,ES6是它的乳名),其中Promise被列为正式规范。作为ES6中最重要的特性之 一,我们有必要掌握并理解透彻。本文将由浅到深,讲解Promise的基本概念与使用方法。 ES6 Promise 先拉出来遛遛 复杂的概念先不讲,我们先简单粗暴地把Promise用一下,有个直观感受。那么第一个问题来了,Promise是什么玩意呢?是一个类?对象?数组?函数? 别猜了,直接打印出来看看吧,console.dir(Promise),就这么简单粗暴。 这么一看就明白了,Promise是一个构造函数,自己身上有all、reject、resolve这几个眼熟的方法,原型上有then、catch等同样很眼熟的方法。这么说用Promise new出来的对象肯定就有then、catch方法喽,没错。 那就new一个玩玩吧。 var p = new Promise(function(resolve, reject){ //做一些异步操作 setTimeout(function(){ console.log('执行完成'); resolve('随便什么数据'); }, 2000);}); Promise的构造函数接收一个参数,是函数,并且传入两个参数:resolve,reject,分别表示异步操作执行成功后的回调函数和异步操作执行失败后的回调函数。其实这里用“成功”和“失败”来描述并不准确,按照标准来讲,resolve是将Promise的状态置为fullfiled,reject是将Promise的状态置为rejected。不过在我们开始阶段可以先这么理解,后面再细究概念。 在上面……

    网友NO.359771

    Java8新特性之Base64详解_动力节点Java学院整理

    BASE64 编码是一种常用的字符编码,在很多地方都会用到。但base64不是安全领域下的加密解密算法。能起到安全作用的效果很差,而且很容易破解,他核心作用应该是传输数据的正确性,有些网关或系统只能使用ASCII字符。Base64就是用来将非ASCII字符的数据转换成ASCII字符的一种方法,而且base64特别适合在http,mime协议下快速传输数据。 JDK里面实现Base64的API 在JDK1.6之前,JDK核心类一直没有Base64的实现类,有人建议用Sun/Oracle JDK里面的sun.misc.BASE64Encoder 和 sun.misc.BASE64Decoder,使用它们的优点就是不需要依赖第三方类库,缺点就是可能在未来版本会被删除(用maven编译会发出警告),而且性能不佳,后面会有性能测试。 JDK1.6中添加了另一个Base64的实现,javax.xml.bind.DatatypeConverter两个静态方法parseBase64Binary 和 printBase64Binary,隐藏在javax.xml.bind包下面,不被很多开发者知道。 在Java 8在java.util包下面实现了BASE64编解码API,而且性能不俗,API也简单易懂,下面展示下这个类的使用例子。 java.util.Base64 该类提供了一套静态方法获取下面三种BASE64编解码器: 1)Basic编码:是标准的BASE64编码,用于处理常规的需求 // 编码String asB64 = Base64.getEncoder().encodeToString("some string".getBytes("utf-8"));System.out.println(asB64); // 输出为: c29tZSBzdHJpbmc=// 解码byte[] asBytes =……

    Copyright 2018-2019 xz577.com 码农之家

    版权责任说明