前言 作为一种现代程序设计语言,Java已经发展为集过程式编程、面向对象编程、函数式编程和泛型编程为一体的程序设计平台,并且它具有简单性、健壮性、安全性、动态性、平台独立与可移植性等优势,可以在网络环境下编写分布式、多线程、嵌入式应用程序。 随着大数据、“互联网+”、云计算、人工智能等新兴产业的发展,Java软件人才的需求量越来越大。现状是高校作为Java软件人才的培养输送基地,所培养的学生与企业所需要的人才存有脱节,不能满足企业对应专业岗位的需要。毕业生需要参加一些社会机构组织的Java技术培训或上岗前要经过长时间的培训才能适应岗位工作,这都大大增加了学生的就业成本和企业的用人成本。这些现象,都是Java教学中需要思考的问题。这一局面的形成有多方面的原因: Java教学内容仅停留在知识点本身,没有形成一个完整的知识体系;教学内容过于陈旧,与企业需求严重脱节;重语法轻实践的教学方式;学生没有形成完整的深入人心的面向对象编程思维;等等。这一局面正是编者不断进行程序设计教材探索的动力。 书名《新概念Java程序设计大学教程》中所谓“新概念”,并非编者在一种程序设计语言中添加什么概念,而是希望建立一种新的程序设计教学的模式来改变程序设计教学效率不高甚至不成功的现状。相较于同类教材,本书具有如下特色。 1. 先入为主地让学生一开始就进入面向对象的世界 人人都说,由于对象反映的是真实世界的对象,面向对象程序设计比较直接,容易理解。但是实际情况是,学生学习了面向对象程序设计后,写出来的程序却是面向过程的。原因就在于我们许多教材是从面向过程开始介绍面向对象的。这种先入为主的面向过程,是不能很好地培养面向对象的思维和方法的。特别是有的高校学生在学习Java之前已经学习过C语言,C语言是一种面向过程的程序设计语言,要从面向过程的思维转向面向对象的思维是一个很难的过程;尤其是C语言学得越好,这种转变越难。只有尽早地、先入为主地从面向对象开始,才能让学习者根深蒂固地掌握面向对象的思维和方法。 2. 本书没有采用传统的语法体系,而是采用基于问题的体系编写 计算机程序设计教材的创新,首先要改变程序设计教材基于语法体系的结构。说到底,语法体系的程序设计教材都是程序设计语言手册的翻版。这种语法体系造就了重语法教学、轻思维训练的教学模式,是学习了程序设计课程却不会编写程序的祸根。 本书没有沿袭Java教材从数据类型、控制结构开始的思路,而是在第一篇直接用6个实例按照“定义类—定义引用—创建对象—操作对象”的过程进行面向对象思维的训练,形成面向对象的思维主线,把数据类型、控制结构等语法嵌入其中。这6个实例就像一根绳子把散落的珍珠(基础语法知识点)串起来,让其形成一个整体(知识体系)。 第二篇通过输入/输出流与序列化、网络编程、图形用户界面开发和JDBC数据库编程的学习加深对于API意义和应用的理解,为开发简单应用程序奠定基础。 第三篇通过设计模式、泛型编程、多线程技术和函数式编程的学习掌握Java高级技术,为培养中高级应用程序开发能力提供保障。 3. 引入设计模式与面向对象程序设计准则内容 不了解设计模式,就没有掌握面向对象的真谛。没有学习设计模式只能开发简单的应用程序,学习掌握了设计模式才能开发复杂的大规模的应用软件。就如初出茅庐的设计师只能设计出简单的建筑,很难设计出雄伟的高楼大厦。在面向对象程序设计的实践中,人们发掘出了一些模式。这些模式对于设计者具有标杆性的启示作用。但是,就23种模式来说,也不是一门程序设计课程所能容纳的。所幸,人们又从这些模式中总结出了开闭原则、面向抽象、接口分离、单一职责、迪米特等法则。这些法则精炼,指导意义更大。但是,它们又非常抽象,本书通过几个实例介绍了几种常用设计模式的应用实践。 4. 立足工业界构建知识体系,遵循良好的编程规范 编者有多年的Java平台下企业项目设计开发经验,了解Java开发主流技术和框架,熟悉Java编程规范和最佳实践。本书基于目前在工业界使用最为广泛的JDK 8编写,介绍了Lambda 表达式、函数式接口、方法引用、Stream API、Date Time API和Optional类等新特性内容。另外,本书示例程序无论是类名、方法、变量的命名,还是代码的组织风格及注释的使用,都遵循Java程序员的惯例和约定,其目的是使读者从一开始就能养成良好的编程习惯。 由于教材容量有限,部分需要进一步学习的内容及案例实践以知识链接二维码的形式给出,读者可扫码自主学习。 在本书的编写过程中参考了部分图书资料和网站资料,在此向其作者表示感谢。 因时间仓促,加之编者水平和经验有限,书中难免存在疏漏与不妥之处,恳请读者批评指正。 编者2023年4月