前言 诞生于20世纪90年代中期的Java编程语言,目前已成为最重要的程序设计语言之一。Java语言不但应用广泛,而且语法简单严谨、结构清晰,既适合编写侧重程序设计思想训练的结构化程序,又适合编写侧重于工程实践的面向对象程序,并且还提供了丰富的图形用户界面组件,是学习程序设计初学者的首选语言。 本书是一本学习Java编程的入门教材,也是读者了解和初步掌握程序设计思想及其实现方法的一本理想读物。本书既适合从零开始学习的读者,又适合学习过一两门程序设计语言、具有一定程序设计能力的读者。如果你还不能使用Java语言完成下列多数任务,那么本书非常适合你。 (1) 输入将来的某个日期,判断其是星期几。 (2) 输入一篇英文文章,统计其中的单词数量以及每个单词的出现次数。 (3) 二分查找、选择排序、冒泡排序。 (4) 熟练使用标签、文本域、文本区域、按钮、单选按钮、复选框、组合框、列表框、文件选择对话框、消息提示对话框、颜色选择对话框、菜单等组件。 (5) 简单图形绘制、图像的显示与控制、简单的声音和动画控制。 (6) 熟悉类、对象、封装、继承、多态、构造方法、重载方法、覆盖方法、抽象类、接口、内部类、异常、输入输出等概念。 (7) 能编写简单的多线程、客户/服务器程序。 本书还提供了一个贯穿全书的程序设计能力提升应用案例: 扑克牌单机版斗地主程序。 对零基础的读者来说,每天学习约两小时,十五六周可完成全部学习(不包括斗地主程序编写时间);具有一定基础的读者在相同时间内应可完成包括斗地主程序编写的所有任务。 本书注重完整的程序设计实践,每章都附有大量具有可实践性的程序实例、自测题、编程实践题。本书与其他教材最大的不同是更注重程序设计能力的培养,在内容安排上由四部分组成。 第一部分是程序设计基础(第1~7章),分别是Java语言初步(包括数据的输入输出)、顺序结构程序设计(包括数学函数和Online Judge系统)、选择结构程序设计、循环结构程序设计、数组(包括二分查找、简单排序算法)、字符串(包括日期和时间)、函数(包括程序的调试)。 第二部分是图形用户界面程序设计(第7~15章),并在第9章和第10章进行了集中讲解,内容涉及窗体、对话框、面板等容器,以及各种常用图形组件的使用,事件、布局管理器等基本概念的讲解,以及各组件之间的关联控制等内容。通过本部分的学习,使读者能熟练掌握针对组件的基本操作,编写简单的图形用户界面程序。 第三部分是面向对象程序设计(第8、11~13章),本部分主要是熟悉面向对象的基本概念,侧重理论讲解。内容包括类的创建、构造方法、属性和方法的封装、类方法、方法的重载与覆盖、类继承、接口的定义与实现、异常处理等。 第四部分是高级Java程序设计(第14~16章),其内容无论是编写哪种类型的程序都会涉及。第14章针对输入输出,主要是讲解文件操作。第15章讲解多线程程序的编写,这是Java语言的特色部分之一,主要是了解多线程程序编写,理解线程访问资源冲突问题及解决方式。第16章讲解简单的客户/服务器程序的编写,理解网络程序间信息传递的机制,方便读者将单机版斗地主程序改为网络版。 为了提升读者的程序设计水平,本书提供了一个以斗地主规则为基础的编写扑克牌程序的案例。通过本例学习,读者将能掌握编写单机版斗地主程序所需要的所有技术,包括如何存储扑克牌、扑克牌类型和牌值的获取、洗牌、抓牌、扑克牌的显示、符合斗地主规则的1~5张牌的牌型判断和大小比较,简单的声音和动画。掌握这些技术之后,读者可自行编写完整的斗地主程序,当然,该程序的人工智能部分是初级的,能管尽管或配合少量逻辑判断。 为便于学习,本书还为读者和主讲教师提供了丰富的配套资源,包括PPT和示例源代码。每年的3月和9月都会在中国大学MOOC上开课,上面有丰富的视频资源,有更多的人一起学习,有教师的答疑,相信一定会有利于读者的学习。将程序设计基础典型题部署在Online Judge平台上,方便读者自学。 虽然作者竭尽所能,但水平有限,书中难免有不妥或错误之处,真诚地欢迎各位专家和读者批评指正。 作者2022年2月于东北大学