
本书是“大数据应用开发(Java)”1+X职业技能等级证书配套教材,同时也是蓝桥学院“Java全栈工程师”培养项目配套教材。全书共9章,以初识Java、数据类型和运算符、流程控制、方法与数组、String及常用类的使用、类和对象、包和访问控制、面向对象基本特征、抽象类和接口为基础,系统介绍面向对象设计(OOD)和面向对象编程(OOP),重点突出面向对象编程的思想。本书内容丰富实用,语言通俗易懂,章节设计合理,配套资源丰富,从零基础开始讲解,尽可能降低初学者的学习门槛。本书直接服务于“大数据应用开发(Java)”1+X职业技能等级证书工作,可作为职业院校、应用型本科院校计算机应用技术、软件技术、软件工程、网络工程和大数据应用技术等计算机相关专业的教材,也可供从事计算机相关工作的技术人员参考。
序 国务院2019年1月印发的《国家职业教育改革实施方案》明确提出,从2019年开始,在职业院校、应用型本科高校启动“学历证书+若干职业技能等级证书”制度试点(即“1+X”证书制度试点)工作。职业技能等级证书,是职业技能水平的凭证,反映职业活动和个人职业生涯发展所需要的综合能力。 “1+X”证书制度的实施,有赖于教育行政主管部门、行业企业、培训评价组织和职业院校等多方力量的整合。培训评价组织是其中不可忽视的重要参与者,是职业技能等级证书及标准建设的主体,对证书质量、声誉负总责,主要职责包括标准开发、教材和学习资源开发、考核站点建设、考核颁证等,并协助试点院校实施证书培训。 截至2020年9月,教育部分三批共遴选了73家培训评价组织,国信蓝桥教育科技(北京)股份有限公司(下称“国信蓝桥”)便是其中一家。国信蓝桥在信息技术领域和人才培养领域具有丰富的经验,其运营的“蓝桥杯”大赛已成为国内领先、国际知名的IT赛事,其蓝桥学院已为IT行业输送了数以万计的优秀工程师,其在线学习平台深受院校师生和IT人士的喜爱。 国信蓝桥在广泛调研企事业用人单位需求的基础上,在教育部相关部门指导下制定了“1+X”《大数据应用开发(Java)职业技能等级标准》。该标准面向信息技术领域、大数据公司、互联网公司、软件开发公司、软件运维公司、软件营销公司等IT类公司、企事业单位的信息管理与服务部门,面向大数据应用系统开发、大数据应用平台建设、大数据应用程序性能优化、海量数据管理、大数据应用产品测试、技术支持与服务等岗位,规定了工作领域、工作任务及职业技能要求。 本丛书直接服务于职业技能等级标准下的技能培养和证书考取需要,包括7本教材: ?《Java程序设计基础教程》 ?《Java程序设计高级教程》 ?《软件测试技术》 ?《数据库技术应用》 ?《Java Web应用开发》 ?《Java开源框架企业级应用》 ?《大数据技术应用》 目前,开展“1+X”试点、推进书证融通已成为院校特别是“双高”院校人才培养模式改革的重点。所谓书证融通,就是将“X”证书的要求融入学历证书这个“1”里面去,换言之,在人才培养方案的设计和实施中应包含对接“X”证书的课程。因此,选取本丛书的全部或部分作为专业课程教材,将有助于夯实学生基础,无缝对接“X”证书的考取和职业技能的提升。 为使教学活动更有效率,在线上、线下深度融合教学理念指引下,丛书编委会为本丛书配备了丰富的线上学习资源。资源访问地址为https://www.lanqiao.cn/oneplusx/。 最后,感谢教育部、行业企业及院校的大力支持!感谢丛书编委会全体同人的辛苦付出!感谢为本丛书出版付出努力的所有人! 郑 未 2020年12月 前言 如果你立志从事IT行业,那么Java这门语言值得深究。 首先,它是最流行的编程语言之一。自20世纪90年代诞生以来,Java一直保持着强劲的势头和优秀的口碑,长期占据TIOBE等知名排行榜榜首。国内外大多数互联网企业都以Java为主要开发语言,无论是国内的阿里巴巴、腾讯、百度,还是国外的Facebook、Google等知名企业,都对Java语言有着很大的依赖性,这些企业的很多产品都是基于Java语言研发而成的。 其次,Java语言功能强大且对使用者友好。Java包含基础程序编程、面向对象编程、反射及异常等高级处理机制,并且可以使用Java直接进行网络编程与高并发编程等高级编程。对于开发者而言,Java语言也是编程界的一个标杆,其语法规范包含了软件开发的核心思想。在编程语言的生态中,诸如移动开发的Android平台、大数据分析平台Hadoop等,都直接使用Java作为其基础语言;再如Kotlin等新兴语言也可以在Java虚拟机上直接运行。以Apache和Spring为代表的第三方组织,也为Java语言提供了诸如消息队列、控制反转、映射控制器等方面的组件或框架,为普通开发者提供了强大的工具库。这些第三方库和Java共同组成了一个完整且强大的软件开发生态。 再次,Java的应用领域非常广泛,几乎没有它不能胜任的IT产品。从嵌入式开发、移动开发,到后台服务器开发,再到云计算及大数据开发,Java始终都以领头羊的姿态引领着这些行业的发展。 Java仍在不停进化,与时俱进。Java语言从推出至今,始终根据市场需求及时更新。并且,为了更好地适应时代的发展,Java的维护公司Oracle从2017年开始实施“每半年发布一个新版本”的长期计划。我们有理由相信,随着互联网时代的技术发展及Oracle对Java的密切追踪与更新,Java在未来一定有着非常大的想象空间。 本书是“大数据应用开发(Java)”1+X职业技能等级证书配套教材,同时也是蓝桥学院“Java全栈工程师”培养项目配套教材,主要介绍Java编程基础的相关内容。为了帮助读者切实掌握书中讲解的内容,蓝桥学院搭建并部署了蓝桥在线平台,在平台中提供了配套的实验环境、图文教程和视频课程,书中涉及的所有案例都可以在蓝桥云平台上实现。 本书共9章:第1章讲解机器语言、汇编语言、高级语言和SQL语言等常见的计算机语言,并简单介绍了Java发展史、Java的特点、Java程序工作原理及Java体系等基础知识,最后详细讲解了如何开发第一个Java程序;第2章~第4章依次介绍了数据类型和运算符、流程控制、方法与数组等知识,这些知识是任何一门编程语言都会涉及的基础;第5章~第9章介绍了String及常用类的使用、类和对象、包和访问控制、面向对象基本特征、抽象类和接口等面向对象领域的知识,在学习这部分内容时,不要仅以“实现功能”为目的,还要尽可能地揣摩其内部蕴含的思想。 本书在易用性上做了充分考虑,从零基础开始讲解,并结合企业应用对知识点进行取舍,对经典案例进行改造升级,尽可能降低初学者的学习门槛。本书章节设计合理,在每章开头都设计了本章简介,各节内容为理论和实践的结合,在知识点介绍后紧跟实践操作,每章的末尾都对重要内容进行了回顾,并通过练习帮助读者巩固相关知识。 本书配套资源丰富,在蓝桥在线学习平台(www.lanqiao.cn/oneplusx)上汇集了微课及实验等多种学习资源。 本书由陈运军和颜群两位老师合作编写,其中,陈运军老师编写第1章~第4章,颜群老师编写第5章~第9章。 陈运军老师曾荣获教育部全国职业院校技能大赛“全国优秀指导教师”称号,拥有丰富的“课证赛岗”模式教学和指导经验,曾主编多本教材。颜群老师是阿里云云栖社区等知名互联网机构的特邀技术专家、认证专家,曾出版多本专著,拥有多年的软件开发及一线授课经验,在互联网上发布的精品视频课程获得广泛好评。 感谢丛书编委会各位专家、学者的帮助和指导;感谢配合技术调研的企业及已毕业的学生;感谢蓝桥学院郑未院长逐字逐句的审核和批注以及在写作方面给予的指导;感谢蓝桥学院各位同事的大力支持和帮助。另外,本书参考和借鉴了一些专著、教材、论文、报告和网络上的成果、素材、结论或图文,在此向原创作者一并表示衷心的感谢。 期望本书的出版能够为软件开发相关专业的学生、程序员和广大编程爱好者快速入门带来帮助,也期望越来越多的人才加入软件开发行业中来,为我国信息技术发展做出贡献。 由于时间仓促,加之编者水平有限,疏漏和不足之处在所难免,恳请广大读者和社会各界朋友批评指正! 编者联系邮箱:x@lanqiao.org 编 者
目 录 第1章 初识Java 1 1.1 Java简介 1 1.2 Java程序的工作原理 3 1.3 Java开发环境搭建 6 1.4 第一个Java程序 7 1.5 本章小结 13 1.6 本章练习 13 第2章 数据类型和运算符 14 2.1 标识符和关键字 14 2.2 变量和常量 15 2.3 数据类型 16 2.4 成员变量和局部变量 22 2.5 从控制台输入数据 24 2.6 运算符 25 2.7 表达式 30 2.8 本章小结 32 2.9 本章练习 32 第3章 流程控制 34 3.1 if语句 34 3.2 switch语句 39 3.3 循环语句 41 3.4 本章小结 48 3.5 本章练习 49 第4章 方法与数组 51 4.1 方法 51 4.1.1 方法概述 51 4.1.2 方法案例 55 4.1.3 递归 57 4.2 一维数组 57 4.2.1 一维数组概述 58 4.2.2 数组作为参数传递 62 4.2.3 增强for循环 65 4.3 排序算法 65 4.3.1 冒泡排序 66 4.3.2 插入排序 66 4.3.3 快速排序 67 4.4 二维数组 74 4.4.1 二维数组概述 74 4.4.2 二维数组案例 76 4.5 本章小结 78 4.6 本章练习 78 第5章 String及常用类的使用 84 5.1 Java API及API文档简介 84 5.2 String类简介 86 5.3 String类的常用方法 89 5.4 StringBuffer类 92 5.4.1 StringBuffer类概述 92 5.4.2 StringBuffer类案例 92 5.4.3 内存模型 94 5.5 其他常用工具类简介 94 5.5.1 日期类 94 5.5.2 SimpleDateFormat类 97 5.5.3 其他工具类 98 5.6 本章小结 98 5.7 本章练习 98 第6章 类和对象 101 6.1 类和对象概述 101 6.1.1 面向过程与面向对象 101 6.1.2 类和对象的概念 102 6.2 Java中的类 103 6.2.1 基本语法 103 6.2.2 案例 107 6.2.3 初识封装 111 6.3 构造方法 112 6.3.1 基本语法 112 6.3.2 this关键字 114 6.3.3 案例 115 6.4 对象初始化过程 117 6.5 重载 120 6.5.1 基本语法 120 6.5.2 案例 120 6.6 本章小结 122 6.7 本章练习 122 第7章 包和访问控制 124 7.1 包概述 124 7.1.1 包的基本使用 125 7.1.2 JDK中的包 126 7.2 引用包 126 7.2.1 类的全限定名 127 7.2.2 导入包 127 7.3 访问控制 129 7.3.1 对类的访问控制 130 7.3.2 对类成员的访问控制 130 7.4 static关键字 131 7.4.1 static关键字的使用 132 7.4.2 Java静态块 134 7.4.3 单例模式 135 7.5 本章小结 136 7.6 本章练习 137 第8章 面向对象基本特征 138 8.1 抽象和封装 138 8.1.1 抽象 138 8.1.2 封装 139 8.1.3 完善租车系统 144 8.1.4 抽象和封装小结 145 8.2 继承 146 8.2.1 继承概述 146 8.2.2 方法重写 149 8.2.3 super关键字 151 8.2.4 继承中的初始化 154 8.2.5 继承小结 155 8.3 多态 156 8.3.1 多态概述 156 8.3.2 实现机制 156 8.3.3 面向基类编程的思想 159 8.3.4 向下转型 160 8.3.5 属性覆盖问题 161 8.3.6 多态小结 162 8.4 本章小结 162 8.5 本章练习 163 第9章 抽象类和接口 164 9.1 抽象类 164 9.1.1 抽象类概念 164 9.1.2 抽象类特征 167 9.1.3 抽象类案例 168 9.2 接口 170 9.2.1 接口概念 170 9.2.2 接口特征 175 9.2.3 接口案例 179 9.3 内部类 181 9.3.1 内部类概念 181 9.3.2 内部类案例 183 9.4 本章小结 186 9.5 本章练习 186 附录A 部分练习参考答案及解析 188 参考文献 206