编写理念
本书是基于如下的指导原则编写的。
每次一个概念。对于可能给初学者带来麻烦的主题,将其分成多个部分,让读者无需熟悉整个主题就能将新学到的概念付诸实践。
兼顾Java和概念。本书的主要目的并非介绍Java,而是用代码示例诠释计算机科学概念。大多数章节以Java的语言特性开头,以概念结束。
简明扼要。本书的一个重要目标是使篇幅够小,好让读者一个学期就能读完并搞懂本书内容。
突出术语。尽可能少引入术语,并在首次使用时给出术语的详尽定义。在每章末尾,我们还将它们组织成了术语表。
程序开发策略。程序编写策略有很多,包括自下而上、自上而下,等等。我们演示了开发程序的多种方法,让读者能够从中选择最适合的。
多条学习曲线。要编写程序,得理解算法、熟悉编程语言,还要能够调试代码。本书始终在讨论这些内容,同时专辟了一个附录来总结调试建议。
有些Java书一上来就介绍类和对象,有些则先介绍过程性编程,再逐步过渡到面向对象编程。
Java的很多面向对象功能都旨在解决以前的语言存在的问题,因此,其实现受到了这些历史原因的影响。对于这些功能,如果你不熟悉它们所能解决的问题,就很难理解。
我们每次介绍一个概念,并尽可能将它讲清楚,让读者能够立即将学到的知识付诸实践。在这个前提之下,我们会尽早地介绍面向对象编程,因此,你不可能翻开本书就接触到这个主题。
然而,如果不使用面向对象功能,根本就无法编写Java程序,哪怕是简单的HelloWorld程序。对于有些功能,我们会在首次提及时简要地介绍一下,再在后面作更深入的讨论。
本书几乎涵盖了“APJavasubset”中的每个主题,非常适合用来备考AP计算机科学A考试(包括面向对象设计和实现[…]
本书适合按顺序逐章阅读,因为每一章都以前一章的内容为基础。本书还有三个附录,你可在任何时间阅读。
过程中反复温习该附录。
使用代码示例
本书的示例代码大都可在Git仓库https://github.com/AllenDowney/ThinkJavaCode中找到。Git是一个版本控制系统,让你能够跟踪项目中的文件。受Git控制的文件集合称为“仓库”。
GitHub是一种托管服务,为Git仓库提供存储空间,还提供了方便的Web界面。它提供了多种处理代码的方式。
单击Fork键可以在GitHub上创建仓库的副本。如果你没有GitHub账户,就需要创建一个。建立分支后,你便在GitHub上有自己的仓库了,可用它来跟踪你编写的代码。然后,还可以“克隆”这个仓库,即将文件的副本下载到计算机。
你也可以在不建立分支的情况下克隆仓库。这样就不需要GitHub账户了,但也无法将所做的修改保存到GitHub中。
附录A(开发工具)
编译、运行和调试Java代码的步骤随开发环境和操作系统而异,我们没有将这些细节放在正文中,因为这会分散读者的注意力。相反,我们专辟了附录A,简要地介绍DrJava——一个非常适合初学者使用的集成开发环境(interactivedevelopmentenvironment,IDE),以及用于检查代码质量的Checkstyle和用于测试的JUnit等工具。
附录B(Java2D图形)
Java提供了处理图形和动画的库,这些主题可能对学生很有吸引力。这些库涉及面向对象功能,读者可能阅读完前11章才能完全理解,但可以很早地使用它们。
附录C(调试)
有关调试的建议遍布全书,我们将这些调试建议收集到了附录C[…]
如果你根本不想使用Git,可用GitHub页面上的DownloadZIP按钮下载ZIP格式的代码,也可通过链接http://www.tinyurl.com/ThinkJavaCodeZip下载。
克隆仓库或解压ZIP文件后,你将看到一个名为ThinkJavaCode的目录,其中包含与本书每章对应的子目录。
本书中的所有示例都是用JavaSEDevelopmentKit8开发和测试的。如果你使用的是更新的版本,这些示例也能正确地运行;但如果你使用的是更早的版本,有些示例可能无法正确地运行。
排版约定
本书使用了下列排版约定。
楷体
表示术语或重点强调的内容。
等宽字体(constantwidth)
表示程序片段,以及正文中出现的变量、函数名、数据库、数据类型、环境变量、语句和关键字等。
加粗等宽字体(constantwidthbold)
表示应该由用户输入的命令或其他文本。