From 8b3cafd07fc905dc211f3625d0b0513e0d3a3666 Mon Sep 17 00:00:00 2001 From: PEGASUS <32333727+PEGASUS1993@users.noreply.github.com> Date: Mon, 7 Sep 2020 21:25:11 +0800 Subject: [PATCH 1/5] Update 00-Preface.md --- docs/book/00-Preface.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/book/00-Preface.md b/docs/book/00-Preface.md index d614e816..f5dadf9d 100644 --- a/docs/book/00-Preface.md +++ b/docs/book/00-Preface.md @@ -93,8 +93,8 @@ Java 的普及性对于其受欢迎程度有重要意义。学习 Java 会让你 ## 献礼 -> 谨以此书献给我敬爱的父亲 E. Wayne Eckel。 -> 1924年4月1日至2016年11月23日 +> 谨以此书献给我敬爱的父亲 E. Wayne Eckel +> (1924.4.1 ~ 2016.11.23)。
From 269c98852de245acb789f31395d88599867d8c52 Mon Sep 17 00:00:00 2001 From: PEGASUS <32333727+PEGASUS1993@users.noreply.github.com> Date: Mon, 7 Sep 2020 21:44:26 +0800 Subject: [PATCH 2/5] Update 00-On-Java-8.md --- docs/book/00-On-Java-8.md | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/docs/book/00-On-Java-8.md b/docs/book/00-On-Java-8.md index c11bde4d..a7d91f09 100644 --- a/docs/book/00-On-Java-8.md +++ b/docs/book/00-On-Java-8.md @@ -51,13 +51,14 @@ -本书出版自美国,版权所有,翻版必究。未经授权不得非法存储在检索系统中,或以电子,机械,影印,录制任何形式传输等。制造商和销售商使用商标用来区分其产品标识。如果这些名称出现在这本书中,并且出版商知道商标要求,则这些名称已经用大写字母或所有大写字母打印。 +本书出版自美国,版权所有,翻版必究。未经授权,不得非法存储在检索系统中,或以电子,机械,影印,录制等形式传播。制造商和销售商使用商标用来区分其产品标识。如果这些名称出现在这本书中,并且出版商知道商标要求,则这些名称已经用大写字母或所有大写字母打印。 Java 是甲骨文公司(Oracle. Inc.)的商标。Windows 95,Windows NT,Windows 2000,Windows XP,Windows 7,Windows 8 和 Windows 10 是微软公司(Microsoft Corporation)的商标。 -此处提及的所有其他产品名称和公司名称均为其各自所有者的财产。作者和出版商在编写本书时已经仔细校对过,但不作任何明示或暗示的保证,对错误或遗漏不承担任何责任。对于因使用此处包含的信息或程序而产生的偶然或间接损失,我们不承担任何责任。 +此处提及的所有其他产品名称和公司名称均为其各自所有者的财产。 -这本书是以平板电脑和计算机为载体的电子书,非传统纸质版书籍。 -故所有布局和格式设计旨在优化您在各种电子书阅读平台和系统上的观看体验。 +作者和出版社在编写本书时已经仔细校对过,但不作出任何形式的保证,也不承担任何错误或遗漏的责任。对于使用本协议中包含的信息或程序而产生的附带或间接损失,本协议不承担任何责任。 + +本书是为平板电脑和计算机设备制作的的电子书,非传统纸质版书籍。 因此所有布局和格式设计旨在优化您在各种电子书阅读平台和系统上的观看体验。 封面由 Daniel Will-Harris 设计,[www.Will-Harris.com](http://www.Will-Harris.com)。 - \ No newline at end of file + From 5c8f55396d1ad4675bbf72792080f9e7d293ff7d Mon Sep 17 00:00:00 2001 From: PEGASUS <32333727+PEGASUS1993@users.noreply.github.com> Date: Mon, 7 Sep 2020 22:11:11 +0800 Subject: [PATCH 3/5] Update 00-Preface.md --- docs/book/00-Preface.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/docs/book/00-Preface.md b/docs/book/00-Preface.md index f5dadf9d..29c694aa 100644 --- a/docs/book/00-Preface.md +++ b/docs/book/00-Preface.md @@ -1,17 +1,17 @@ # 前言 -> 本书基于 Java 8 版本来教授当前 Java 编程的最优实践。 +> 本书基于 Java 8 版本特性来讲授最现代化的Java 编程方式。 我之前的 Java 书籍 *Thinking in Java, 4th Edition*(《Java编程思想 (第4版)》 Prentice Hall 2006)依然适用于 Java 5 编程,在此版本 Java 语言开始用作 Android 编程。此后,这门语言的许多地方发生了翻天覆地的变化,特别是 Java 8 的转变,以至于新的 Java 代码读起来的感觉也不尽相同。这也促使我时隔多年,创作了这本新书。 -《On Java 8》旨在面向已具有编程基础的开发者们。对于初学者,可以先在 [Code.org](http://Code.org) 或者 [Khan Academy](https://www.khanacademy.org/computing/computer-programming) 等网站补充必要的前置知识。同时,[OnJava8.com](http://www.OnJava8.com) 上也有免费的 Thinking in C(《C编程思想》)专题知识。与几年前我们依赖印刷媒体时相比,像 YouTube、博客和 StackOverFlow 这样的网站使得寻找答案变得非常简单。如果将本书作为编程入门书籍,请结合这些学习途径努力坚持下去。同时,本书也适合想要扩展知识的在职程序员。 +《On Java 8》旨在面向已具有编程基础的开发者们。对于初学者,可以先在 [Code.org](http://Code.org) 或者 [可汗学院Khan Academy](https://www.khanacademy.org/computing/computer-programming) 等网站补充必要的预备知识。同时,[OnJava8.com](http://www.OnJava8.com) 上也有免费的 Thinking in C(《C编程思想》)专题知识。与几年前我们依赖印刷媒体时相比,像 YouTube、博客和 StackOverFlow 这样的网站使得寻找答案变得非常简单。如果将本书作为编程入门书籍,请结合这些学习途径努力坚持下去。同时,本书也适合想要扩展知识的专业程序员。 得益于《*Thinking in Java*》,我得以到世界各地演讲,我对此由衷感激。它为我的 [Reinventing Business](http://www.reinventing-business.com) 项目在与人员及公司建立联系方面提供了宝贵的帮助。我最终撰写本书的原因之一就是想支持这一项目的研究,而下一个合乎逻辑的步骤似乎是实际创建一个所谓的蓝绿色组织(Teal Organization)。我希望本书可以成为该项目的一种众筹。 ## 教学目标 -每章教授一个或一组相关的概念,并且这些知识不依赖于尚未学习到的章节。如此,学习者可以在当前知识的背景框架下循序渐进地掌握 Java。 +每章讲授一个或一组相关的概念,并且这些知识不依赖于尚未学习到的章节。如此,学习者可以在当前知识的背景框架下循序渐进地掌握 Java。 本书的教学目标: @@ -47,13 +47,13 @@ 最后,本书所著时间似乎也还不错,因为 Java 8 引入的新功能已经强烈地影响了今后 Java 的编码方式。截止我在写这本书时,Java 9 似乎更专注于对语言底层的基础结构功能的重要更新,而非本书所关注的新编码方式。话说回来,得益于电子书出版形式的便捷,假如我发现本书有需要更新或添加的内容,我可以第一时间将新版本推送给现有读者。 -## 测试用例 +## 测试样例 书中代码示例基于 Java 8 和 Gradle 编译构建,并且代码示例都保存在[这个自由访问的GitHub的仓库](https://github.com/BruceEckel/OnJava8-Examples) 中。我们需要内置的测试框架,以便于在每次构建系统时自动运行。否则,你将无法保证自己代码的可靠性。为了实现这一点,我创建了一个测试系统来显示和验证大多数示例的输出结果。这些输出结果我会附加在示例结尾的代码块中。有时仅显示必要的那几行或者首尾行。利用这种方式来改善读者的阅读和学习体验,同时也提供了一种验证示例正确性的方法。 -## 普及性 +## 受欢迎度 -Java 的普及性对于其受欢迎程度有重要意义。学习 Java 会让你更容易找到工作。相关的培训材料,课程和其他可用的学习资源也很多。对于企业来说,招聘 Java 程序员相对容易。如果你不喜欢 Java 语言,那么最好不要拿他当作你谋生的工具,因为这种生活体验并不好。作为一家公司,在技术选型前一定不要单单只考虑 Java 程序员好招。每种语言都有其适用的范围,有可能你们的业务更适用于另一种编程语言来达到事半功倍的效果。如果你真的喜欢 Java,那么欢迎你。希望这本书能丰富你的编程经验! +Java的受欢迎程度具有重要意义。学习 Java 会让你找工作更容易。相关的培训材料,课程和其他可用的学习资源也很多。对于使用Java的初创企业来说,招聘 Java 程序员相对容易。如果你真得不喜欢 Java 语言,那么最好不要使用它————仅仅为了找工作而使用它,并不是一个快乐的生活选择。作为一家公司,在技术选型前一定不要单单只考虑容易招聘Java 程序员。每种语言都有其适用的范围,有可能另一种编程语言更适用于你们的业务,来达到事半功倍的效果。如果你真的喜欢 Java,那么欢迎你。希望这本书能丰富你的编程经验! ## 关于安卓 From 4530beb3f381b44c14e1dd533968cdb498a37898 Mon Sep 17 00:00:00 2001 From: PEGASUS <32333727+PEGASUS1993@users.noreply.github.com> Date: Thu, 10 Sep 2020 16:40:07 +0800 Subject: [PATCH 4/5] Update 00-Preface.md --- docs/book/00-Preface.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/book/00-Preface.md b/docs/book/00-Preface.md index 29c694aa..903b92e5 100644 --- a/docs/book/00-Preface.md +++ b/docs/book/00-Preface.md @@ -1,7 +1,7 @@ # 前言 -> 本书基于 Java 8 版本特性来讲授最现代化的Java 编程方式。 +> 本书基于 Java 8 版本来教授当前 Java 编程的最优实践。 我之前的 Java 书籍 *Thinking in Java, 4th Edition*(《Java编程思想 (第4版)》 Prentice Hall 2006)依然适用于 Java 5 编程,在此版本 Java 语言开始用作 Android 编程。此后,这门语言的许多地方发生了翻天覆地的变化,特别是 Java 8 的转变,以至于新的 Java 代码读起来的感觉也不尽相同。这也促使我时隔多年,创作了这本新书。 @@ -47,13 +47,13 @@ 最后,本书所著时间似乎也还不错,因为 Java 8 引入的新功能已经强烈地影响了今后 Java 的编码方式。截止我在写这本书时,Java 9 似乎更专注于对语言底层的基础结构功能的重要更新,而非本书所关注的新编码方式。话说回来,得益于电子书出版形式的便捷,假如我发现本书有需要更新或添加的内容,我可以第一时间将新版本推送给现有读者。 -## 测试样例 +## 测试用例 书中代码示例基于 Java 8 和 Gradle 编译构建,并且代码示例都保存在[这个自由访问的GitHub的仓库](https://github.com/BruceEckel/OnJava8-Examples) 中。我们需要内置的测试框架,以便于在每次构建系统时自动运行。否则,你将无法保证自己代码的可靠性。为了实现这一点,我创建了一个测试系统来显示和验证大多数示例的输出结果。这些输出结果我会附加在示例结尾的代码块中。有时仅显示必要的那几行或者首尾行。利用这种方式来改善读者的阅读和学习体验,同时也提供了一种验证示例正确性的方法。 ## 受欢迎度 -Java的受欢迎程度具有重要意义。学习 Java 会让你找工作更容易。相关的培训材料,课程和其他可用的学习资源也很多。对于使用Java的初创企业来说,招聘 Java 程序员相对容易。如果你真得不喜欢 Java 语言,那么最好不要使用它————仅仅为了找工作而使用它,并不是一个快乐的生活选择。作为一家公司,在技术选型前一定不要单单只考虑容易招聘Java 程序员。每种语言都有其适用的范围,有可能另一种编程语言更适用于你们的业务,来达到事半功倍的效果。如果你真的喜欢 Java,那么欢迎你。希望这本书能丰富你的编程经验! +Java的受欢迎程度具有重要意义。学习 Java 会让你更容易找到工作。相关的培训材料,课程和其他可用的学习资源也很多。对于使用Java的初创企业来说,招聘 Java 程序员相对容易。如果你真的不喜欢 Java 语言,那么最好不要使用它————仅仅为了找工作而使用它,并不是一个快乐的生活选择。作为一家公司,在技术选型前一定不要单单只考虑容易招聘Java 程序员。每种语言都有其适用的范围,有可能另一种编程语言更适用于你们的业务,来达到事半功倍的效果。如果你真的喜欢 Java,那么欢迎你。希望这本书能丰富你的编程经验! ## 关于安卓 From a8f3a5bcf12b06eac6b0587dc92aabfcfdb97231 Mon Sep 17 00:00:00 2001 From: PEGASUS <32333727+PEGASUS1993@users.noreply.github.com> Date: Wed, 23 Sep 2020 15:46:42 +0800 Subject: [PATCH 5/5] Update Appendix-Becoming-a-Programmer.md --- docs/book/Appendix-Becoming-a-Programmer.md | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/docs/book/Appendix-Becoming-a-Programmer.md b/docs/book/Appendix-Becoming-a-Programmer.md index edbf4c8b..437fbcc3 100644 --- a/docs/book/Appendix-Becoming-a-Programmer.md +++ b/docs/book/Appendix-Becoming-a-Programmer.md @@ -12,25 +12,25 @@ 我的朋友丹尼尔(就是设计我的书封面的人)有一个兄弟,他有段时间通过向酒吧和餐馆提供弹球机来赚钱。他有一台投币式街机(老虎机),最早的《乓》游戏之一,我对此全然不知,到现在我还忍受不了这东西(现在我几乎不玩电脑游戏,这样看来我可能是个没有幽默的人,但似乎编程比玩电脑游戏更有趣、更具挑战性。) -后来我在高中参与了摄影和新闻工作,在大学的第一年就主修新闻学。我觉得自己已经从学校学到了足够多的东西,又转修了物理学。后来我在加州大学欧文分校完成了物理学位,如果我当时选择了一个特定的工程领域,修了足够的工程课就能拿到双专业,但我试图走得更远一些,所以最后我获得的本科学位是 "应用物理"。作为一名本科生,我多多少少学习了一些可以自娱自乐,但又没有任何深度的计算机编程课程。我个人认为在这些课程细细熏陶下,帮我打下了一定的基础,但事实我理解的这些东西没有任何深度。我不知道计算机、编译器或解释器有什么区别(只是对编译器和解释器一点点的理解)。对我来说计算机是绝对可靠的,而且我从来没有想过在程序语言和操作系统中会有出现错误的可能。 +后来我在高中参与了摄影和新闻工作,在大学的第一年就主修新闻学。我觉得自己已经从学校学到了足够多的东西,又转修了物理学。后来我在加州大学尔湾分校完成了物理学位,如果我当时选择了一个特定的工程领域,修了足够的工程课就能拿到双专业,但我试图走得更远一些,所以最后我获得的本科学位是 "应用物理"。作为一名本科生,我多多少少学习了一些可以自娱自乐,但又没有任何深度的计算机编程课程。我个人认为在这些课程细细熏陶下,帮我打下了一定的基础,但事实我理解的这些东西没有任何深度。我不知道计算机、编译器或解释器有什么区别(只是对编译器和解释器一点点的理解)。对我来说计算机是绝对可靠的,而且我从来没有想过在程序语言和操作系统中会有出现错误的可能。 -后来我去了在加州州立理工大学攻读研究生,主要有三点原因 +后来我去了加州州立理工大学攻读研究生,主要有三点原因: -1. 我真的非常喜欢物理学这个领域 +1. 我真的非常喜欢物理学这个领域; -2. 他们接受了我,甚至给了我一份教学工作和奖学金 +2. 他们接收了我,甚至给了我一份教学工作和奖学金 ; -3. 出乎意料的是他们给我的工作时间不止一个夏天 +3. 出乎意料的是他们给我的工作时间不止一个夏天。 而我完全没做好上班的准备。 -作为一名物理专业的学生,我学习的是太阳能发电系统,当时太阳能发电系统很大 (如果你的房子上装了太阳能或生意上是关于太阳能系统,加州就会给予税收抵免,因此也兴起很多生意),加州理工大学也承诺会在工程系开设相应的课程。然而因为学校没有提供必要的课程,要想获得在太阳能工程的学位得花好几年时间。所以我学习了研究生其他的工程课,包括介绍机械,太阳能,电气和电子工程。我上的课是非电气工程专业的电气工程导论。最常见的研究生工程课程是计算机工程专业,所以最后我拿了那个学位。我还上了艺术课,几门舞蹈课,还有一些计算机科学课程 (Pascal和数据结构),在计算机工程中,我终于弄清楚了处理器的工作流程,从那以后我一直带着一个处理器在身上。这些就是我学的计算机基础知识。 +作为一名物理专业的学生,我学习的是太阳能发电系统,当时太阳能发电系统很大 (如果你的房子上装了太阳能或生意上是关于太阳能系统,加州就会给予税收抵免,因此也兴起很多生意),加州州立理工大学也承诺会在工程系开设相应的课程。然而因为学校没有提供必要的课程,要想获得在太阳能工程的学位得花好几年时间。所以我学习了研究生其他的工程课,包括介绍机械,太阳能,电气和电子工程。我上的课是非电气工程专业的电气工程导论。最常见的研究生工程课程是计算机工程专业,所以最后我拿了那个学位。我还上了艺术课,几门舞蹈课,还有一些计算机科学课程 (Pascal和数据结构),在计算机工程中,我终于弄清楚了处理器的工作流程,从那以后我一直带着一个处理器在身上。这些就是我学的计算机基础知识。 刚开始工作的时候,凭借着一堆硬件和相对简单低水平的编程,做了一名计算机工程师。因为C语言似乎是理想的嵌入式系统语言,于是我开始自学,并慢慢开始了解更多关于编程语言的东西。我们在这家公司从源代码构建编译器,这让我大开眼界。 (想象一下一个编译器只是另一个软件的一部分!) 当我去华盛顿大学海洋学院为Tom Keffer后来创建了“疯狗浪”)工作时,我们决定使用C++。我只有一本Stroustrup写的非初学者书可以参考,最终不得不通过检查C++预处理器生成的中间C代码来了解语言的功能。这个过程非常痛苦,但学习的效果很好。从那以后我就用相同的方式学习,因为它让我学习了如何剖析一种语言,并看到它本质的能力,与此同时开始有了批判性思维。 -我并没有理解清楚所有的概念。只是在之后的日子里不断反复,我所知道的一切需要时间才能消化吸收。如果我现在能很容易地理解一个新概念,那只是因为它是我已经知道的积累概念的一个变种。在加州理工大学招收非计算机本科学历的计算机科学研究生项目中,学生们曾经说他们花了一年的时间才弄清楚他们对计算机的困惑(他们正在沉浸程序之中)。当人们学习计算机时,他们往往会对自己抱有不切实际的期望,通常是他们听说学计算机编程的好处,就希望在几周内找到一份高薪的工作。但是,最好的学习过程是先对计算机感兴趣,随着时间的推移,学习的越来越多,自然的就开始自学。 +我并没有理解清楚所有的概念。只是在之后的日子里不断反复,我所知道的一切需要时间才能消化吸收。如果我现在能很容易地理解一个新概念,那只是因为它是我已经知道的积累概念的一个变种。在加州州立理工大学招收非计算机本科学历的计算机科学研究生项目中,学生们曾经说他们花了一年的时间才弄清楚他们对计算机的困惑(他们正在沉浸程序之中)。当人们学习计算机时,他们往往会对自己抱有不切实际的期望,通常是他们听说学计算机编程的好处,就希望在几周内找到一份高薪的工作。但是,最好的学习过程是先对计算机感兴趣,随着时间的推移,学习的越来越多,自然的就开始自学。 这些就是我主要做的事,尽管我通过学计算机工程有还算扎实的基础,但我没上过编程课,而是通过自学。在此期间我也在不断地学习新事物,在这个行业里,不断学习是非常重要的一部分。