格式修改

This commit is contained in:
LingCoder
2019-01-06 19:16:32 +08:00
parent 1428e00764
commit 6897f5f95a
4 changed files with 21 additions and 19 deletions

View File

@@ -3,7 +3,7 @@
> “我的语言极限,即是我的世界的极限。” ——路德维希·维特根斯坦(*Wittgenstein*
这句话对于编程语言来说也一样。你所使用的编程语言会将你的思维模式固化并逐渐远离其他语言。Java 作为一门傲娇的派生语言尤其如此。最早的语言设计者为了不想在项目中使用 C ++,而创造了这种看起来很像 C ++,却比 C ++有了改进的新语言(他们的原始项目从未实现过)。虚拟机和垃圾回收机制是其最核心的变化,这两个概念本书后面的章节都会有详细描述。 不仅如此Java 还在其他方面推动行业了发展。例如,现在绝大多数编程语言都包含文档注释语法和 HTML 文档生成的工具。Java 最主要的概念之一“对象”来自SmallTalk语言。Java 定义了“对象”(在下一章中描述)为编程的基本单元。于是万物皆对象。
这句话对于编程语言来说也一样。你所使用的编程语言会将你的思维模式固化并逐渐远离其他语言。Java 作为一门傲娇的派生语言尤其如此。最早的语言设计者为了不想在项目中使用 C++,而创造了这种看起来很像 C++,却比 C++ 有了改进的新语言(他们的原始项目从未实现过)。虚拟机和垃圾回收机制是其最核心的变化,这两个概念本书后面的章节都会有详细描述。 不仅如此Java 还在其他方面推动行业了发展。例如,现在绝大多数编程语言都包含文档注释语法和 HTML 文档生成的工具。Java 最主要的概念之一“对象”来自 SmallTalk 语言。Java 定义了“对象”(在下一章中描述)为编程的基本单元。于是万物皆对象。
时间已经检验了这种信念,并发现它太过狂热。有些人甚至认为“对象”是完全错误的概念,应该被丢弃。就我个人而言,把一切都当成一个对象不仅是一个不必要的负担,而且还会招致许多设计朝着不好的方向发展。尽管如此,“对象”的概念依然有其闪光点。固执地要求所有东西都是一个对象(特别是一直到最底层级别)是一个设计错误。相反,完全逃避“对象”的概念似乎同样太过苛刻。
@@ -13,9 +13,9 @@
2. 了解 Java 语言界限,更好地设计和编码。
编程有关管理复杂性问题的复杂性依赖于机器的复杂性。由于这种复杂性我们的大多数编程项目都失败了。许多语言设计决策时都考虑到了复杂性但在某些时候其他问题也势必不会少的程序员不可避免地“碰壁”。例如C ++必须向后兼容C允许C程序员轻松迁移),并且效率很高。这些目标诚然很好,并且也解释了为什么C ++在编程界取得了成功。为了保证兼容性的代价会造成语言额外的复杂性。当然,你可以责怪程序员和管理人员,但如果一种语言可以通过捕捉异常来提供有用的信息,为什么不呢?
编程有关管理复杂性问题的复杂性依赖于机器的复杂性。由于这种复杂性我们的大多数编程项目都失败了。许多语言设计决策时都考虑到了复杂性但在某些时候其他问题也势必不会少的程序员不可避免地“碰壁”。例如C++ 必须向后兼容 C允许 C 程序员轻松迁移),并且效率很高。这些目标诚然很好,并且也解释了为什么 C++ 在编程界取得了成功。为了保证兼容性的代价会造成语言额外的复杂性。当然,你可以责怪程序员和管理人员,但如果一种语言可以通过捕捉异常来提供有用的信息,为什么不呢?
虽然Visual BASICVB绑定在BASIC上但BASIC实际上并不是一种可扩展的语言。在VB上堆积的所有扩展造成大量无法维护的语法。Perl 向后兼容 awksedgrep 以及其它要替换的 Unix 工具因此它经常被指责生成“只写代码”也就是说你看不懂自己的代码。另一方面C ++VBPerl 和其他语言(如 SmallTalk的一些设计工作集中在复杂性问题上因此在解决某些类型的问题方面非常成功。通信革命使我们所有人更容易地相互沟通一对一团体和行星。据说下一次革命会形成一种新全球性的思想这种思想源于足量的人之间的相互联系。Java 可能会也可能不会成为这场革命的工具之一,但至少这种可能性让我觉得我现在正在做的传道授业是一件有意义的事情。
虽然 Visual BASICVB绑定在 BASIC 上,但 BASIC 实际上并不是一种可扩展的语言。在 VB 上堆积的所有扩展造成大量无法维护的语法。Perl 向后兼容 awksedgrep 以及其它要替换的 Unix 工具因此它经常被指责生成“只写代码”也就是说你看不懂自己的代码。另一方面C ++VBPerl 和其他语言(如 SmallTalk的一些设计工作集中在复杂性问题上因此在解决某些类型的问题方面非常成功。通信革命使我们所有人更容易地相互沟通一对一团体和行星。据说下一次革命会形成一种新全球性的思想这种思想源于足量的人之间的相互联系。Java 可能会也可能不会成为这场革命的工具之一,但至少这种可能性让我觉得我现在正在做的传道授业是一件有意义的事情。
@@ -28,22 +28,22 @@
你可能已经在学校、网络或其他书本上了熟悉了这样。只要你对自己的编程基础有自信,你就可以完成本书的学习。
你可以通过在 On Java 8的网站上免费下载 Think in C 来补充学习 Java 所需要的前置知识。 本书介绍了 Java 语言的基本控制机制以及面对对象编程的概念。在本书中我引述了一些C/C ++ 语言中的一些特性来帮助读者更好的理解 Java。 毕竟 Java 是在它们的基础之上发明的。理解他们之间的区别有助于读者更好的学习Java。
你可以通过在 On Java 8的网站上免费下载 Think in C 来补充学习 Java 所需要的前置知识。 本书介绍了 Java 语言的基本控制机制以及面对对象编程的概念。在本书中我引述了一些 C/C ++ 语言中的一些特性来帮助读者更好的理解 Java。 毕竟 Java 是在它们的基础之上发明的。理解他们之间的区别,有助于读者更好的学习 Java。
## JDK文档
甲骨文公司已经提供了标准免费的JDK文档。除非必要否则在本书中将不再赘述有关API使用的细节。使用浏览器来即时搜索最新最全的JDK文档要好过翻阅本书来查找。只有在需要补充特定的示例时我才会提供有关的额外描述。
甲骨文公司已经提供了标准免费的 JDK 文档。除非必要,否则在本书中将不再赘述有关 API 使用的细节。使用浏览器来即时搜索最新最全的 JDK 文档要好过翻阅本书来查找。只有在需要补充特定的示例时,我才会提供有关的额外描述。
## C编程思想
《Think in C 》已经可以在www.OnJava8.com免费下载。Java的基础语法是基于C语言的。《Think in C 》中有更适合初学者的编程基础介绍。 我已经委托 Chuck Allison 将这本C基础的书籍作为独立产品附赠于本书的 CD 中。希望大家在阅读本书时,都已具备了学习 JAVA 的良好基础。
《Think in C 》已经可以在 www.OnJava8.com 免费下载。Java 的基础语法是基于 C 语言的。《Think in C 》中有更适合初学者的编程基础介绍。 我已经委托 Chuck Allison 将这本 C 基础的书籍作为独立产品附赠于本书的 CD 中。希望大家在阅读本书时,都已具备了学习 JAVA 的良好基础。
## 源码下载
本书中所有源代码的示例都在版权保护的前提下通过GITHUB免费提供。您可以将这些代码用于教育。任何人不得在未经正确引用代码来源的情况下随意重新发布此代码示例。在每个代码文件中您都可以找到以下版权声明文件作为参考
本书中所有源代码的示例都在版权保护的前提下通过 GITHUB 免费提供。您可以将这些代码用于教育。任何人不得在未经正确引用代码来源的情况下随意重新发布此代码示例。在每个代码文件中,您都可以找到以下版权声明文件作为参考:
**Copyright.txt**
@@ -55,9 +55,9 @@
3. 可以通过以下方式获得将源代码合并到印刷媒体中的许可MindView LLCPO Box 969Crested ButteCO 81224 MindViewInc@gmail.com
4. 源代码和文档的版权归MindView LLC所有。提供的源代码没有任何明示或暗示的担保包括任何适销性适用于特定用途或不侵权的默示担保。MindView LLC不保证任何包含源代码的程序的运行不会中断或没有错误。MindView LLC不对任何目的的源代码或包含源代码的任何软件的适用性做出任何陈述。包含源代码的任何程序的质量和性能的全部风险来自源代码的用户。用户理解源代码是为研究和教学目的而开发的建议不要仅仅因任何原因依赖源代码或任何包含源代码的程序。如果源代码或任何产生的软件证明有缺陷则用户承担所有必要的维修修理或更正的费用。
4. 源代码和文档的版权归 MindView LLC 所有。提供的源代码没有任何明示或暗示的担保包括任何适销性适用于特定用途或不侵权的默示担保。MindView LLC 不保证任何包含源代码的程序的运行不会中断或没有错误。MindView LLC 不对任何目的的源代码或包含源代码的任何软件的适用性做出任何陈述。包含源代码的任何程序的质量和性能的全部风险来自源代码的用户。用户理解源代码是为研究和教学目的而开发的,建议不要仅仅因任何原因依赖源代码或任何包含源代码的程序。如果源代码或任何产生的软件证明有缺陷,则用户承担所有必要的维修,修理或更正的费用。
5. 在任何情况下MINDVIEW LLC或其出版商均不对任何一方根据任何法律理论对直接间接特殊偶发或后果性损害承担任何责任包括利润损失业务中断商业信息丢失或任何其他保险公司。由于MINDVIEW LLC或其出版商已被告知此类损害的可能性因此使用本源代码及其文档或因无法使用任何结果程序而导致的个人受伤或者个人受伤。MINDVIEW LLC特别声明不提供任何担保包括但不限于对适销性和特定用途适用性的暗示担保。此处提供的源代码和文档基于“原样”基础没有MINDVIEW LLC的任何随附服务MINDVIEW LLC没有义务提供维护支持更新增强或修改。
5. 在任何情况下MINDVIEW LLC 或其出版商均不对任何一方根据任何法律理论对直接间接特殊偶发或后果性损害承担任何责任包括利润损失业务中断商业信息丢失或任何其他保险公司。由于MINDVIEW LLC 或其出版商已被告知此类损害的可能性因此使用本源代码及其文档或因无法使用任何结果程序而导致的个人受伤或者个人受伤。MINDVIEW LLC 特别声明不提供任何担保包括但不限于对适销性和特定用途适用性的暗示担保。此处提供的源代码和文档基于“原样”基础没有MINDVIEW LLC的任何随附服务MINDVIEW LLC 没有义务提供维护,支持,更新,增强或修改。
**请注意**MindView LLC 仅提供以下唯一网址发布更新书中的代码示例https://github.com/BruceEckel/OnJava8-examples 。您可在上述条款范围内将示例免费使用于项目和课堂中。
@@ -69,7 +69,7 @@
本书中代码标识符(关键字,方法,变量和类名)以粗体,固定宽度代码字体显示。像“**class**”这种在代码中高频率出现的关键字可能让你觉得粗体有点乏味。其他显示为正常字体。本书文本格式尽可能遵循 Oracle 常见样式,并保证在大多数 Java 开发环境中被支持。书中我使用了自己喜欢的字体风格。Java 是一种自由的编程语言,你也可以使用 IDE集成开发环境工具如 IntelliJ IDEAEclipse或NetBeans将格式更改为适合你的格式。
本书代码文件使用自动化工具进行测试,并在最新版本的 Java 编译通过(除了那些特别标记的错误之外)。本书重点介绍并使用 Java 8进行测试。如果您必须了解更早的语言版本可以在[www.OnJava8.com](http://www.OnJava8.com)免费下载 *Thinking in Java*
本书代码文件使用自动化工具进行测试,并在最新版本的 Java 编译通过(除了那些特别标记的错误之外)。本书重点介绍并使用 Java 8进行测试。如果您必须了解更早的语言版本可以在 [www.OnJava8.com](http://www.OnJava8.com) 免费下载 *Thinking in Java*
## BUG提交
@@ -79,7 +79,7 @@
## 邮箱订阅
您可以在[www.OnJava8.com上](http://www.OnJava8.com)订阅邮件。邮件不含广告并尽量提供干货。
您可以在 [www.OnJava8.com上](http://www.OnJava8.com) 订阅邮件。邮件不含广告并尽量提供干货。
## Java图形界面
@@ -94,7 +94,7 @@ Sun 在图形界面的最后一次尝试,称为 JavaFX。当 Oracle 收购 Sun
现今 Swing 依然是 Java 发行版的一部分只接受维护不再有新功能开发而Java现在是一个开源项目它应该始终可用。此外Swing 和 JavaFX 有一些有限的交互性。这些可能是为了帮助开发者过渡到 JavaFX。
桌面程序领域似乎从没勾起 Java设计师的野心。最终Java 没有在图形界面取得该有的一席之地。另外,曾被大肆吹嘘的 JavaBeans 也没有获得任何影响力。许多不幸的作者花了很多精力在Swing上编写书籍甚至只用JavaBeans编写书籍。Java图形界面程序大多数情况下仅用于 集成开发环境IDE和一些企业内部应用程序。您是可以使用 Java 开发图形界面,但这不是 Java 最擅长的领域。如果你必须学习 Swing它可以在 *Thinking in Java*第4版可从www.OnJava8.com获得和其他专门的书籍中学习。。
桌面程序领域似乎从没勾起 Java设计师的野心。最终Java 没有在图形界面取得该有的一席之地。另外,曾被大肆吹嘘的 JavaBeans 也没有获得任何影响力。(许多不幸的作者花了很多精力在 Swing 上编写书籍,甚至只用 JavaBeans 编写书籍。Java 图形界面程序大多数情况下仅用于 集成开发环境IDE和一些企业内部应用程序。您是可以使用 Java 开发图形界面,但这不是 Java 最擅长的领域。如果你必须学习 Swing它可以在 *Thinking in Java*第4版可从 www.OnJava8.com 获得)和其他专门的书籍中学习。。
<!-- 分页 -->

View File

@@ -53,11 +53,11 @@
本书出版自美国,版权所有,翻版必究。未经授权不得非法存储在检索系统中,或以电子,机械,影印,录制任何形式传输等。制造商和销售商使用商标用来区分其产品标识。如果这些名称出现在这本书中,并且出版商知道商标要求,则这些名称已经用大写字母或所有大写字母打印。
Java 是甲骨文公司Oracle. Inc.的商标。Windows 95Windows NTWindows 2000Windows XPWindows 7Windows 8和Windows 10是微软公司Microsoft Corporation的商标。
Java 是甲骨文公司Oracle. Inc.的商标。Windows 95Windows NTWindows 2000Windows XPWindows 7Windows 8和 Windows 10是微软公司Microsoft Corporation的商标。
此处提及的所有其他产品名称和公司名称均为其各自所有者的财产。作者和出版商在编写本书时已经仔细校对过,但不作任何明示或暗示的保证,对错误或遗漏不承担任何责任。对于因使用此处包含的信息或程序而产生的偶然或间接损失,我们不承担任何责任。
这本书是以平板电脑和计算机为载体的电子书,非传统纸质版书籍。
故所有布局和格式设计旨在优化您在各种电子书阅读平台和系统上的观看体验。
封面由Daniel Will-Harris设计[www.Will-Harris.com](http://www.Will-Harris.com)
封面由 Daniel Will-Harris 设计,[www.Will-Harris.com](http://www.Will-Harris.com)
<div style="page-break-after: always;"></div>

View File

@@ -4,9 +4,9 @@
> 本书基于 Java 8版本来教授目前最惯用的Java编码形式。
在此之前我的另一本Java书籍Thinking in Java 第4版《Java编程思想》 Prentice Hall 2006对于 Java 5的编程依然有指导意义。Java 5是用于Android编程的语言版本。
在此之前,我的另一本 Java 书籍 Thinking in Java 第4版《Java编程思想》 Prentice Hall 2006对于 Java 5的编程依然有指导意义。Java 5是用于 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编程思想》专题知识。
随着 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 这样的网站让寻找答案变得非常容易。请将这些与坚持不懈的努力相结合。你可以将本书作为你的编程入门书籍。同样她也适用于想要扩展知识的在职程序员。每次在世界各地的演讲中,我都非常感谢 Thinking in Java 这本书给我带来的所有荣誉。事实证明,这些荣誉对我现在的[Reinventing Business](http://www.reinventing-business.com)项目中和加强外界与公司的联系是非常宝贵的。最后,写这本书的原因之一是支持我[Reinventing Business](http://www.reinventing-business.com)重塑似乎下一个合乎逻辑的步骤是实际创建一个所谓的蓝绿色组织Teal Organization。我希望这本书可以成为该项目的一种众筹。
@@ -36,7 +36,7 @@
如果你有读过我过去的作品,那么你应该知道,我一般倾向于指出这些语言设计错误 Java 已经发展出了一批狂热的追随者。他们对待这门语言更像是阵营而不是编程工具。因为我已经写过有关 Java 的书所以他们理所当然的认为我也是这个“阵营”的一份子。于是当我指出Java的错误时就会造成两种影响
1. 最初会有许多错误“阵营”的人成为了牺牲品。最终时隔多年大家都意识到这是个设计上的错误然后错误就这样成为了Java历史的一部分。
1. 最初,会有许多错误“阵营”的人成为了牺牲品。最终,时隔多年,大家都意识到这是个设计上的错误,然后错误就这样成为了 Java 历史的一部分。
2. 更重要的是,新程序员并没有经历过“他们”为什么要采用这种实现方式的斗争过程。特别是那些隐隐约约感觉不对却依然说服自己“我必须要这么做”或者“我只是没学明白”从而继续错下去的人。更糟糕的是,教授这些编程知识的老师们没能深入的去研究这里是否有设计上的错误,而是继续错误的解读。通过了解语言设计上的错误,能让开发者们更好的理解和意识到错误的本质,从而更快地进步。
@@ -56,7 +56,7 @@
## 测试用例
本书中的代码示例基于 Java 8和 Grade 编译构建,并且这些代码示例都保存在[这个自由访问的GitHub的仓库](https://github.com/BruceEckel/OnJava8-Examples) 中。我们需要内置的测试框架在每次构建系统时运行,否则你将无法保证自己代码的可靠性。为了在本书中实现这一点,我创建了一个测试系统来显示和验证大多数示例的输出结果。这个输结果我会附加在示例结尾的代码块中。有时仅显示必要的那几行或者首尾行。利用这种方式来改善读者的阅读和学习体验,同时也提供了一种验证示例正确性的方法。
本书中的代码示例基于 Java 8和 Gradle 编译构建,并且这些代码示例都保存在[这个自由访问的GitHub的仓库](https://github.com/BruceEckel/OnJava8-Examples) 中。我们需要内置的测试框架在每次构建系统时运行,否则你将无法保证自己代码的可靠性。为了在本书中实现这一点,我创建了一个测试系统来显示和验证大多数示例的输出结果。这个输结果我会附加在示例结尾的代码块中。有时仅显示必要的那几行或者首尾行。利用这种方式来改善读者的阅读和学习体验,同时也提供了一种验证示例正确性的方法。
@@ -75,7 +75,7 @@ Java 的普及性对于其受欢迎程度有重要意义。学习 Java 会让你
## 电子版权声明
《On Java 8》仅提供电子版并且仅通过[www.OnJava8.com](http://www.OnJava8.com)提供。任何未经 <mindviewinc@gmail.com> 授权的其他来源或流传送机构都是非法的。本作品受版权保护未经许可请勿通过以任何方式分享或发布。您可以使用这些示例进行教学只要不对本书非法重新出版。有关完整详细信息请参阅示例分发中的Copyright.txt文件。对于视觉障碍者电子版本有可搜索性字体大小调整或文本到语音等诸多好处。
《On Java 8》仅提供电子版并且仅通过 [www.OnJava8.com](http://www.OnJava8.com) 提供。任何未经 <mindviewinc@gmail.com> 授权的其他来源或流传送机构都是非法的。本作品受版权保护!未经许可,请勿通过以任何方式分享或发布。您可以使用这些示例进行教学,只要不对本书非法重新出版。有关完整详细信息,请参阅示例分发中的 Copyright.txt 文件。对于视觉障碍者,电子版本有可搜索性,字体大小调整或文本到语音等诸多好处。
任何购买这本书的读者还需要一台计算机来运行和写作代码。另外电子版在计算机上和移动设备上的显示效果俱佳推荐使用平板设备阅读。相比购买传统纸质版的价格平板电脑价格都足够便宜。在床上阅读电子版比看这样一本厚厚的实体书要方便得多。起初你可能会有些不习惯但我相信很快你就会发现它带来的优点远胜过不适。我已经走过这个阶段Google Play 图书的浏览器阅读体验非常好,包括在 Linux 和 iOS 设备上。作为一次尝试,我决定尝试通过 Google 图书进行出版。

View File

@@ -862,4 +862,6 @@ command line, you might also need to set your CLASSPATH. ↩
code listings narrow for this book, not all these guidelines could
be followed, but youll see that the style I use here matches the
Java standard as much as possible.↩
<!-- 分页 -->
<div style="page-break-after: always;"></div>