详情
如您想下载本书配套资源,请添加本书QQ读者群:947143857。进群后,可在群公告获得本书配套资源的下载地址。
如您想下载本书配套资源,请添加本书QQ读者群:947143857。进群后,可在群公告获得本书配套资源的下载地址。
书名:Java编程从入门到实践
ISBN:978-7-115-52220-7
本书由人民邮电出版社发行数字版。版权所有,侵权必究。
您购买的人民邮电出版社电子书仅供您个人使用,未经授权,不得以任何方式复制和传播本书内容。
我们愿意相信读者具有这样的良知和觉悟,与我们共同保护知识产权。
如果购买者有侵权行为,我们可能对该用户实施包括但不限于关闭该帐号等维权措施,并可能追究法律责任。
编 著 扶松柏 王 洋
责任编辑 张 涛
人民邮电出版社出版发行 北京市丰台区成寿寺路11号
邮编 100164 电子邮件 315@ptpress.com.cn
网址 http://www.ptpress.com.cn
读者服务热线:(010)81055410
反盗版热线:(010)81055315
本书循序渐进地讲解了Java语言的核心语法知识,并通过大量的实例讲解了各个知识点的具体用法,本书分为26章。第0~2章是Java的基础知识部分,包括学习本书必备的知识、Java开发基础、Java开发工具;第3~10章为核心语法部分,包括Java基础语法、条件语句、循环语句和跳转语句、数组、面向对象基础、面向对象编程进阶、构造器、多态和引用类型、内部类、匿名类和枚举类;第11~16章为Java开发进阶提高部分,包括集合、泛型、Java常用类库、异常处理、I/O文件处理和流处理;第17~23章为Java典型应用部分,包括JavaFX桌面程序开发基础、JavaFX图像、布局和组件、JavaFX事件处理、数据库编程、开发互联网程序、开发多线程Java程序、开发网络爬虫程序;第24~25章为综合实战部分,通过两个大型实例的实现过程,详细讲解了使用Java语言开发大数据挖掘和分析系统(网络爬虫+JSP+MySQL+大数据分析)和微信商城系统(SpringBoot+Vue+微信小程序)的过程。
本书适合Java开发人员阅读,也适合计算机相关专业的师生阅读。
Java语言经过20多年的发展,已经成为市面上功能最强大的开发语言之一,深受广大程序员和软件厂商的喜爱。我们可以使用Java语言开发出各种各样的应用程序,如游戏程序、聊天程序、购物网站、爬虫程序和适用于手机的Android程序。为了让更多的人掌握这门优秀的编程语言,笔者精心地编写了本书。
时光荏苒,Java经过多年的发展,受到了新语言的挑战,例如Python和Go。Java在接受挑战的同时,近几年也在加紧优化自己。从Java 9开始,每隔半年发布一个新版本,写本书的时候已经发布了Java 14。
非常遗憾的是,市场上很多教科书和教程内容还停留在Java 8甚至Java 7上。为了让广大读者在第一时间内了解Java语言的新特性,让大家编写出更加优雅的Java代码,本书以全新的Java 14为基础,不但详细讲解Java语言的所有核心开发知识,而且重点讲解Java 9、Java 10、Java 11、Java 12、Java 13和Java 14的语法新特性。这些新增的语法,使得Java语言的功能更加强大。
本书从初学者的实际出发,精心编写而成。本书涵盖了入门类、范例类和项目实战类3类图书的内容,并且对实战知识不是点到为止地讲解,而是深入地探讨,同时用配套资源来扩展实战案例,用网络答疑的方式解决读者学习中的问题。通过本书的学习,初学者将可以胜任Java开发的工作。
(1)以“从入门到实践”的写作方法构建内容,让读者轻松入门。
为了使读者能够完全看懂本书的内容,本书在将入门知识讲透的同时,用大量实例演练基础知识的应用,让读者真正从入门到应用。
(2)破解语言难点,以“技术解惑”贯穿全书,绕过学习中的陷阱。
本书不会罗列式地讲解Java语言的知识点。为了帮助读者学懂基本知识点,书中有“技术解惑”板块,让读者知其然又知其所以然,也就是看得明白学得通。
(3)全书有大量实例和范例,与“实例大全”类图书拥有同数量级的范例。
通过大量实例及范例介绍,本书不仅实现了对知识点的横向切入和纵向比较,而且从不同的角度展现一个知识点的用法,力图实现举一反三的效果。
(4)配套资源包含视频讲解,降低了学习难度。
为本书配套提供的教学视频能够引导初学者快速入门,增强学习信心,从而快速理解所学知识。
(5)提供源程序+视频+PPT,让学习更轻松。
本书的配套资源中不但有全书的源代码,而且有精心制作的范例讲解视频。本书的配套PPT可以在toppr.net网站下载。
(6)通过QQ群和网站论坛与读者互动,形成互帮互学的朋友圈。
为了方便给读者答疑,本书作者将通过网站论坛(toppr.net)、QQ群与读者沟通,并且随时在线与读者互动,让大家在互学互帮中形成一个良好的学习编程的氛围。
为读者服务的QQ群号是947143857,作者会在群里分享学习体会,并在线解答初学者的学习困惑,请大家务必进群。
本书最大的特色是实现了基本知识、实例演示、范例演练、技术解惑和课后练习共计5个部分内容的融合。其中各章内容由如下模块构成。
(1)基本知识:循序渐进地讲解了Java语言开发的基本知识点。
(2)实例演示:用大量实例演示了各个入门知识点的用法。
(3)范例演练:为了达到对知识点融会贯通、举一反三的效果,为每个正文实例配备了两个演练范例,书中配套的大量范例从多个角度演示了各个知识点的用法和技巧。
(4)技术解惑:把读者容易混淆的部分单独用一个模块进行讲解和剖析,对读者所学的知识实现了“拔高”处理。
(5)课后练习:通过具体编程练习,帮助读者加深对知识的理解和掌握。
初学编程的自学者
编程爱好者
大中专院校的教师和学生
相关培训机构的教师和学员
毕业设计的学生
初级和中级程序开发人员
软件测试人员
十分感谢家人给予我们的巨大支持。我们水平毕竟有限,书中难免存在纰漏之处,诚请读者提出意见或建议,以便修订并使之更臻完善。本书的编辑联系邮箱是zhangtao@ptpress.com.cn。
最后感谢读者购买本书,希望本书能成为读者编程路上的领航者,祝读者阅读快乐!
作者
本书由异步社区出品,社区(https://www.epubit.com/)为您提供相关资源和后续服务。
要获得以上配套资源,请在异步社区本书页面中单击,跳转到下载界面,按提示进行操作即可。注意:为保证购书读者的权益,该操作会给出相关提示,要求输入提取码进行验证。
作者和编辑尽最大努力来确保书中内容的准确性,但难免会存在疏漏。欢迎您将发现的问题反馈给我们,帮助我们提升图书的质量。
当您发现错误时,请登录异步社区,按书名搜索,进入本书页面,单击“提交勘误”,输入勘误信息,单击“提交”按钮即可,如下图所示。本书的作者和编辑会对您提交的勘误进行审核,确认并接受后,您将获赠异步社区的100积分。积分可用于在异步社区兑换优惠券、样书或奖品。
我们的联系邮箱是contact@epubit.com.cn。
如果您对本书有任何疑问或建议,请您发邮件给我们,并请在邮件标题中注明本书书名,以便我们更高效地做出反馈。
如果您有兴趣出版图书、录制教学视频,或者参与图书翻译、技术审校等工作,可以发邮件给我们;有意出版图书的作者也可以到异步社区在线提交投稿(直接访问www.epubit.com/selfpublish/submission即可)。
如果您所在的学校、培训机构或企业想批量购买本书或异步社区出版的其他图书,也可以发邮件给我们。
如果您在网上发现有针对异步社区出品图书的各种形式的盗版行为,包括对图书全部或部分内容的非授权传播,请您将怀疑有侵权行为的链接发邮件给我们。您的这一举动是对作者权益的保护,也是我们持续为您提供有价值的内容的动力之源。
“异步社区”是人民邮电出版社旗下IT专业图书社区,致力于出版精品IT技术图书和相关学习产品,为作译者提供优质出版服务。异步社区创办于2015年8月,提供大量精品IT技术图书和电子书,以及高品质技术文章和视频课程。更多详情请访问异步社区官网https://www.epubit.com。
“异步图书”是由异步社区编辑团队策划出版的精品IT专业图书的品牌,依托于人民邮电出版社近30年的计算机图书出版积累和专业编辑团队,相关图书在封面上印有异步图书的LOGO。异步图书的出版领域包括软件开发、大数据、AI、测试、前端、网络技术等。
异步社区
微信服务号
Java是一门功能强大的编程语言,一直雄居各编程语言排行榜的榜首。在学习本书的内容之前,需要读者先掌握一些计算机的基础知识,并了解本书的内容和学习路线,为步入本书后面知识的学习打下基础。
本章内容
计算机应用基础
Java学习路线图
配套资源使用说明
知识点讲解:视频\第0章\计算机应用基础.mp4
↑扫码看视频
计算机(Computer)是一种能按照某些预定的程序(这些程序往往体现的是人类的意志)对输入到其中的信息进行处理,并将处理结果输出的高度自动化的电子设备。本节将带领大家认识计算机应用的基础知识,为读者步入本书后面知识的学习打下基础。
中央处理器(Central Processing Unit,CPU)是一块超大规模的集成电路,通常是一台计算机的运算核心和控制核心,主要包括算术和逻辑单元(Arithmetic and Logic Unit,ALU)和控制器(Control Unit,CU)两大部件。此外,还包括若干个寄存器和高速缓冲存储器,以及用于实现它们之间联系的数据、控制及状态总线。CPU与内部存储器和输入/输出设备合称为电子计算机三大核心部件,其功能主要是执行计算机指令以及处理计算机软件中的数据。计算机的性能在很大程度上由CPU的性能决定,而CPU的性能主要体现在其运行速度上。
比特音译自英文名词bit。在现实应用中,比特是表示信息量的一种单位。二进制数中的位是表示信息量的度量单位,为信息量的最小单位。二进制数中的1位所包含的信息就是1比特,如二进制数0100就是4比特。在计算机应用中,二进制数0和1是构成信息的最小单位,被称作“位”或“比特”。例如数字化音响中用电脉冲表达音频信号,“1”代表有脉冲,“0”代表脉冲间隔。如果波形上每个点的信息用4位一组的代码表示,则称4比特。信息量越大,表达模拟信号就越精确,对音频信号还原能力就越强。
字节(Byte)是计算机信息技术用于计量存储容量的一种计量单位,有时也表示一些计算机编程语言中的数据类型和语言字符。
在计算机应用中,由若干比特位组成1字节。字节由多少比特位组成取决于计算机的自身结构。通常来说,微型计算机的CPU多用8位组成1字节,用以表示构成字符的代码,构成1字节的8位被看作一个整体,字节是存储信息的基本单位。大多数情况下,计算机存储单位的换算关系如下。
1B=8bit
1KB=1024B
1MB=1024KB
1GB=1024MB
上述关系中各个单位的具体说明如下。
(1)B表示字节。
(2)bit表示比特。
(3)KB表示千字节。
(4)MB表示兆字节。
(5)GB表示吉字节。
二进制是计算技术中被广泛采用的一种数制,是使用0和1两个数码来表示数字的数制。二进制的基数为2,进位规则是“逢二进一”,借位规则是“借一当二”,由18世纪德国数理哲学大师莱布尼兹发现。当前的计算机系统使用的基本上是二进制系统,数据在计算机中主要是以补码的形式存储的。计算机中的二进制则是一种非常微小的开关,用“开”表示1,用“关”表示0。因为只使用0、1两个数字符号,所以二进制非常简单方便,易于用电子方式实现。
下面介绍如何从十进制转换成二进制。
(1)正整数转成二进制:转换原则是除以2取余,然后倒序排列,高位补零。也就是说,将正的十进制数除以2,将得到的商再除以2,依此类推,直到商为0或1时为止,然后在旁边标出各步的余数,最后倒着写出来,高位补零即可。例如,将十进制数字42转换为二进制,将42除以2,得到的余数分别为010101,然后将得到的余数倒着排一下,就会得到数字42对应二进制数是101010。但是因为计算机内部用于表示数的字节单位是定长的,如8位、16位或32位,所以当位数不够时,需要在高位补零。前面将42转换成二进制数时得到的结果是6位的101010,在前面缺少两位,所以将十进制42转换成二进制的最终结果是00101010。
(2)负整数转成二进制:转换原则是先将对应的正整数转换成二进制后,对二进制取反,然后对结果加1。以十进制负整数−42为例,将42的二进制形式00101010取反,得到的结果是11010101,然后再加1,结果是11010110。
(3)整数二进制转换成十进制:转换原则是先将二进制数字补齐位数,首位如果是0,就代表是正整数;首位如果是1,则代表是负整数。先看首位是0的正整数,补齐位数以后,获取“n×2m”的计算结果,其中上标“m”表示二进制数字的位数,“n”表示二进制的某个位数。将二进制中的各个位数分别实现“n×2m”计算,然后将计算结果相加,得到的值就为十进制。比如,将二进制1010转换为十进制的过程如下:
二进制 1 0 0
补齐位数 0 0 0 0 1 0 1 0
进行“n×2m”计算 0×27 0×26 0×25 0×24 1×23 0×22 1×21 0×20
计算结果 0 0 0 0 8 0 2 0
将各位求和的结果 10
所以说,将二进制1010转换为十进制的结果是10。
如果要转换的二进制数补足位数后首位为1,表示这个二进制数是负整数。此时就需要先进行取反,再进行换算。例如,二进制数11101011的首位为1,那么先取反,得到−00010100,然后按照上面的计算过程得出10100对应的十进制数为20,所以二进制数11101011对应的十进制数为−20。
美国信息交换标准代码(American Standard Code for Information Interchange,ASCII)是基于拉丁字母的一套计算机编码系统,主要用于显示现代英语和其他西欧语言。ASCII是现今最通用的单字节编码系统,并等同于国际标准ISO/IEC 646。
一个英文字母(不分大小写)占1字节的空间,一个中文汉字占2字节的空间。一个二进制数字序列,在计算机中作为一个数字单元,一般为8位二进制数,换算为十进制后,最小值为0,最大值为255。例如,一个ASCII码就是1字节。
Unicode(又称统一码、万国码或单一码)是计算机科学领域里的一项业界标准,包括字符集、编码方案等。Unicode是为了解决传统的字符编码方案存在的局限而产生的,它为每种语言中的每个字符设定统一并且唯一的二进制编码,以满足跨语言、跨平台进行文本转换、处理的要求。
最初的Unicode编码采用固定长度的16位,也就是2字节代表一个字符,这样一共可以表示65 536个字符。显然,要表示各种语言中所有的字符,这是远远不够的。Unicode 4.0规范考虑到了这种情况,定义了一组附加字符编码,附加字符编码采用两个16位来表示,这样最多可以定义1 048 576个附加字符,在Unicode 4.0规范中只定义了45 960个附加字符,在Unicode 5.0版本中已定义的字符有238 605个。
Unicode只是一种编码规范,目前实际实现的Unicode编码只有UTF-8、UCS-2和UTF-16共3种,这3种Unicode字符集之间可以按照规范进行转换。
UTF-8(8-bit Unicode Transformation Format)是一种针对Unicode的可变长度字符编码。UTF-8由Ken Thompson于1992年创建,现在已经标准化为RFC 3629。UTF-8用1~6字节编码Unicode字符。用在网页上,可以统一页面显示中文简体及其他语言(如英文、日文、韩文)。一个UTF-8英文字符等于1字节,对于一个中文(含繁体)UTF-8字符,少数占用3字节,多数占用4字节。一个UTF-8数字占用1字节。
知识点讲解:视频\第0章\Java学习路线图.mp4
↑扫码看视频
图0-1所示的是本书所设定的学习路线图,这也是我们认为科学、合理的学习Java语言的路线。只要读者严格按照图中所示的流程学习Java语言,一定会取得事半功倍的效果。
图0-1 Java学习路线图
知识点讲解:视频\第0章\配套资源使用说明.mp4
↑扫码看视频
本书提供的配套资源信息量大,既包括了书中所有实例的源码,也包括了每个实例对应的范例源码,还包括了视频讲解用到的实例源码。打开本书“配套资源”资料后,主目录界面的效果如图0-2所示。
图0-2 配套资源的主目录界面效果
图0-2中各个部分的具体说明如下。
(1)“daima”:该目录中保存了书中正文实例的源码,正文实例是指在书中以“实例×-×”样式体现的例子。例如请看图0-3,图中的实例5-1就是一个正文实例,这个实例的源码保存在“配套资源”文件夹的“daima”目录下,具体路径是“daima\5\Forone1.java”。
图0-3 本书实例截图
(2)“演练范例”:该目录中保存了本书中所有范例的源码,本书每一个正文实例对应两个范例。例如在图0-3中,“范例5-1-01”和“范例5-1-01”便是两个范例。在配套资源中,各个范例的源码保存在“演练范例”目录下,一个范例源码独自占用一个子文件夹,具体路径是范例名中的数字。例如在图0-3中,“范例5-1-01”的源码保存在“演练范例”目录的“5-1-01”子目录下,“范例5-1-02”的源码保存在“演练范例”目录的“5-1-02”子目录下,如图0-4所示。
图0-4 配套资源中的范例源码
(3)“范例讲解视频”:该目录中保存了本书中所有范例的讲解视频,例如文件“1-1-01[自定义].mp4”是书中“范例1-1-0”的讲解视频。
(4)“实例讲解视频”:保存了本书中所有实例的讲解视频,每一个实例的讲解视频独自占用一个视频文件,并且这个实例下面对应的两个范例讲解也包含在整个视频中,具体视频路径是实例名中的数字。例如“实例5-1”“范例5-1-01”和“范例5-1-02”对应的视频讲解文件名是“5-1.mp4”,保存在“实例讲解视频”目录下。“实例5-2”“范例5-2-01”和“范例5-2-02”对应的视频讲解文件名是“5-2.mp4”,保存在“范例讲解视频”目录下。
注意:使用系统自带的播放器打开配套资源中的视频文件时,有可能发生只有声音没有图像的情形,建议读者用暴风影音、QQ或迅雷等专业播放器观看视频。
(5)“资源使用说明”:该目录中保存了视频教学文档,视频演示了配套资源的使用方法、源码导入方法、实例调试方法、范例调试方法、范例导入方法等。
(6)“视频”:该目录中保存了本书知识点的讲解视频,本书每一个二级目录小节都会包含一个视频。例如在图0-5中,“视频\第5章\Java循环语句.mp4”就是本书5.1节知识点讲解视频的具体路径。
图0-5 知识点讲解视频
(1)二进制数00101110转换成十进制数的结果是 。
(2)二进制数00101110转换成十六进制数的结果是 。
(3)在网络中寻找几款在线的进制转换工具,练习将不同的数字转换成不同的进制。
在学习编写Java程序之前,需要先搭建Java运行环境。只有在搭建Java运行环境之后,才能在自己的计算机中运行Java程序。本章将详细讲解搭建Java运行环境的知识,并讲解运行Java程序的方法,为读者步入本书后面知识的学习打下基础。
本章内容
初步认识Java语言
搭建Java运行环境
编写第一个Java程序
编译并运行Java程序
技术解惑
遵循源文件命名规则
忽视系统文件的扩展名
大小写问题
到底用不用IDE工具
区分JRE和JDK
充分利用Java API文档
知识点讲解:视频\第1章\初步认识Java语言.mp4
↑扫码看视频
TIOBE语言排行榜是IT界比较权威的榜单,它是展示编程语言流行程度的一个重要指标。在过去的几年中,Java语言一直位居TIOBE语言排行榜的前列。
我们通常所说的Java,指的是Sun公司在1995年5月推出的一套编程架构,它主要由Java程序设计语言(简称Java语言)和Java运行时环境两部分组成。
Java程序需要在Java平台的支持下运行,Java平台则主要由Java虚拟机(Java Virtual Machine,JVM)和Java应用编程接口(Application Programming Interface,API)构成。我们需要在自己的设备上安装Java平台之后,才能运行Java应用程序。关于这一点,读者倒是不必太担心,因为如今所有操作系统都有相应版本的Java平台,我们只需要按照相关的提示安装好它们,然后我们的Java程序只需要编译一次,就可以在各种操作系统中运行。
整个Java语言分为以下3个技术体系。
(1)JavaSE:Java 2 Platform Standard Edition的缩写,即Java平台标准版。它涵盖了Java语言的大多数功能,本书将以JavaSE平台进行讲解。
(2)JavaEE:Java 2 Platform Enterprise Edition的缩写,即Java平台企业版。它主要用于开发企业级程序。
(3)JavaME:Java 2 Platform Micro Edition的缩写,即Java平台微型版。它主要用于开发移动设备端的程序。
(1)语法简单:如果读者学过C和C++语言,会发现Java语言的语法与C/C++语言十分接近,这样大多数程序员可以很容易地学习和使用Java。另外,Java还丢弃了C++中很少使用、很难理解的那些特性,学习者再也不用为指针发愁了。除此之外,Java还为我们提供了垃圾回收机制,使得程序员不必再为内存管理而担忧。
(2)支持面向对象:Java语言支持类、接口和继承等特性,并且为简单起见,Java只支持类之间的单继承和接口之间的多继承,并且支持类与接口之间的实现机制。
(3)健壮性:Java的强类型、异常处理、垃圾回收等机制保证了Java程序的健壮性。另外,Java的安全检查机制对保证Java程序的健壮性也有很大帮助。
(4)安全性:Java语言除了具有常见的安全特性以外,还可以通过分配不同的名称空间来防止本地类被外来的同名类意外替代。另外,Java的字节代码检查和安全管理机制(SecurityManager类)在Java应用程序中也起到“安全哨兵”的作用。
(5)可移植性:Java语言具有很强的可移植性,一个Java程序可以在多种平台上运行,能够在不同的开发环境与应用环境中使用。
(6)支持多线程:当程序需要同时处理多项任务时,就需要用到多线程并行开发。通过使用多线程技术,一个Java程序在同一时间可以做多件事情,甚至可以开启多个线程同时做一件事情,以提高效率。
(7)高性能:随着JIT(Just-In-Time)编译器技术的发展,Java的运行速度已经越来越接近于C++语言。Java语言属于高性能编程语言中的一员。
知识点讲解:视频\第1章\搭建Java运行环境.mp4
↑扫码看视频
在使用Java语言进行Java开发之前需要先搭建Java运行环境,只有在计算机中搭建运行环境后才可以运行Java程序。本节将详细讲解搭建Java运行环境的知识。
在进行任何Java开发工作之前,必须先安装好JDK,并配置好相关的环境,这样我们才能在自己的计算机中编译并运行一个Java程序。JDK是整个Java运行环境的核心,包括Java运行环境(简称JRE)、Java工具和Java基础的类库,是开发和运行Java环境的基础。下面讲解获得适合自己当前所用操作系统对应JDK的方法。
(1)虽然Java语言是Sun公司发明的,但是现在Sun公司已经被Oracle公司收购,所以,我们安装JDK的工作得从Oracle中文官方网站上找到相关的下载页面开始,如图1-1所示。作者在写作本书时,JDK的最新版本是Java SE 14。
图1-1 Oracle官网的主页
(2)单击顶部导航栏中的图标,在弹出的页面中单击“Downloads”链接,如图1-2所示。
图1-2 单击“Downloads”链接
(3)在弹出的页面中列出了Oracle公司旗下的所有产品的下载链接,例如Java、Oracle数据库等。用鼠标往下滚动页面,在此页面的下方找到Java的下载界面。单击“Java (JDK) for Developers”链接,如图1-3所示。
图1-3 Oracle产品的下载页面
(4)在弹出的页面中列出了当前JDK的所有版本,包括当前最新版本和历史版本。我们下载最新版本(写作本书时的最新版本)Java SE 14,首先单击Java SE 14版本右侧的“JDK Download”链接,如图1-4所示。
图1-4 单击“JDK Download”链接
(5)在弹出的下载页面中读者需要根据自己所用的操作系统来下载相应的JDK。下面,对各JDK对应的操作系统进行具体说明。
因为笔者的计算机操作系统是64位的Windows系统,所以,单击Windows x64 Installer右边的“jdk-14_windows-x64_bin.exe”链接进行下载,如图1-5所示。
图1-5 JDK下载界面
(6)弹出“接收协议”页面,勾选“I reviewed and accept the Oracle…”前面的复选框,然后单击“Download jdk-14_windows-x64_bin.exe”按钮开始下载,如图1-6所示。
图1-6 勾选“I reviewed and accept the Oracle…”前面的复选框
注意:此步骤可能会要求下载者注册成为Oracle会员用户,在注册成功后再按照上面的步骤继续下载。另外,如果下载的JDK和自己计算机的操作系统不对应,后续在安装JDK时就会失败。
(7)待下载完成后,双击下载的“.exe”文件,将弹出如图1-7所示的对话框。在此单击“下一步”按钮。
图1-7 安装程序对话框
(8)安装程序弹出如图1-8所示的对话框。我们可以在此选择JDK的安装路径,笔者设置的是“C:\Program Files\Java\jdk-14\”。
图1-8 安装路径对话框
(9)设置好安装路径后,继续单击“下一步”按钮,安装程序就会提取安装文件并进行安装,如图1-9所示。
图1-9 提取安装文件并进行安装
(10)安装程序在完成上述过程后会弹出如图1-10所示的对话框,单击“关闭”按钮即可完成整个安装过程。
图1-10 完成安装
(11)最后,我们要检测一下JDK是否真的安装成功了。具体做法是,依次单击“开始”︱“运行”项,在“运行”对话框中输入“cmd”并按回车键,在打开的CMD窗口中输入java -version,如果显示如图1-11所示的提示信息,则说明安装成功。注意,在java和横杠之间有一个空格。
图1-11 CMD窗口
如果在CMD窗口中输入java -version命令后提示出错信息,表明我们的Java并没有完全安装成功。这时候读者将Java目录的绝对路径添加到系统的PATH中即可解决。以下是该解决办法的流程。
(1)右键依次单击“我的电脑”︱“属性”︱“高级系统设置”,在弹出的窗口中单击“环境变量”项,然后在“系统变量”处选择“新建”,弹出如图1-12所示的对话框。在变量名文本框中输入JAVA_HOME,在变量值文本框中输入刚才设置的JDK安装路径,笔者使用的是“C:\Program Files\Java\jdk-14\”。
图1-12 设置系统变量(1)
(2)新建一个变量,名字为PATH,其变量值如下所示,注意最前面分别有一个英文格式的点和一个分号。
.;%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar
单击“确定”按钮找到PATH变量,单击“编辑”按钮,弹出如图1-13所示对话框,在变量值文本框中添加如下值。
%JAVA_HOME%/bin;
图1-13 设置系统变量(2)
如果读者使用的是Windows 10系统,在设置系统变量PATH时,操作会与上面的步骤有所区别。因为在Windows 10系统中,选中系统变量PATH并单击“编辑”按钮后,会弹出一个与之前Windows系统不同的“编辑环境变量”对话框,如图1-14所示。我们需要单击右侧的“新建”按钮,然后才能添加JDK所在的绝对路径,而不能用前面步骤中使用的“%JAVA_HOME%”,此处需要分别添加Java的绝对路径,例如笔者的安装目录是“C:\Program Files\Java\jdk-14\”,所以需要分别添加如下两个变量值:
C:\Program Files\Java\jdk-14\bin
C:\Program Files (x86)\Common Files\Oracle\Java\javapath
图1-14 Windows 10系统添加两个绝对路径的变量值
完成上述操作后,我们可以再依次单击“开始”︱“运行”,在“运行”对话框中输入“cmd”并按下回车键,然后在打开的CMD窗口中输入java -version,就会看到图1-15所示的提示信息,输入javac就会看到图1-16所示的提示信息,这就说明JDK 14安装成功。
图1-15 输入java -version
图1-16 输入javac后的显示界面
知识点讲解:视频\第1章\编写第一个Java程序.mp4
↑扫码看视频
在完成Java运行环境的安装和配置之后,接下来就要开始编写一段Java程序了。然后,我们还要编译这段Java程序并让它运行起来。本节将详细讲解编写并运行第一个Java程序的过程。
实例1-1 第一个Java程序
源码路径:
daima\001\First.java
范例1-1-01:第二个Java程序
源码路径:演练范例\1-1-01\
范例1-1-02:第三个Java程序
源码路径:演练范例\1-1-02\
打开Windows系统自带的记事本程序,在其中输入下面的代码。
public class First{
/*这是一个 main 方法*/
public static void main(String [] args){
/* 输出此消息 */
System.out.println
("Java是目前排名第一的编程语言!");
}
}
我们将该文件保存为First.java。务必注意,该文件名“First.java”中的字符“First”一定要和代码行“public class First”中的字符“First”一致,并且字母大小写也必须完全一致(举例中是字母F大写,其余字母小写),否则后面的编译步骤将会出错,如图1-17所示。
图1-17 用记事本编辑文件First.java
注意:可以编写Java程序的编辑器
我们可以使用任何无格式的纯文本编辑器来编辑Java源代码,在Windows操作系统上可以使用记事本(NotePad)、EditPlus等程序,在Linux平台上可使用vi命令等。但是不能使用写字板和Word等文档编辑器来编写Java程序。因为写字板和Word等工具是有格式的编辑器,当我们使用它们编辑一份文档时,这个文档中会包含一些隐藏的格式化字符,这些隐藏字符将导致程序无法正常编译和运行。
关键字指的是Java系统保留使用的标识符,也就是说这些标识符只有Java系统才能使用,程序员不能使用这样的标识符。例如,在First.java中,public就是一个关键字。另外,关键字还包括Java中的特殊保留字。表1-1所列是Java的关键字。
表1-1 Java关键字
abstract | boolean | break | byte | case | catch | char | class | const | continue |
default | do | double | else | extends | final | finally | float | for | goto |
if | implements | import | instanceof | int | interface | long | nafive | new | package |
private | protected | public | return | short | static | strictfp | super | switch | synchronized |
this | throw | throws | transient | try | void | volatile | while | assert |
true、false和null也都是Java中定义的特殊字符,虽然它们不属于关键字,但也不能被用作为类名、方法名和变量名等。另外,表中的goto和const是两个保留字(reserved word)。保留字的意思是Java现在还未将其作为关键字,但可能在未来的Java版本中将其作为关键字。
标识符指的是赋予类、方法或变量的名称。在Java语言中,我们通常会用标识符来识别类名、变量名、方法名、类型名和数组名和文件名。例如,在文件First.java中,代码行“public class First”中的“First”就是一个标识符,它标识的是一个类,该类被命名为“First”。
按照Java的语法规定,标识符可以由大小写字母、数字、美元符号($)组成,但不能以数字开头,标识符没有最大长度限制。例如,下面都是合法的标识符。
Chongqin$
D3Tf
Two
$67.55
关于标识符的合法性,主要可以参考下面的4条规则。
(1)标识符不能以数字开头,如7788。
(2)标识符中不能出现规定以外的字符,如You’re、deng@qq.com。
(3)标识符中不能出现空格。
(4)标识符中只能出现美元字符$,而不能包含@、#等特殊字符。
由于标识符是严格区分大小写的,因此在Java语言中,no和No是完全不同的。除此之外,还需要注意的是虽然$符号在语法上是允许使用的,但我们会在编码规范中建议读者尽量不要使用它,因为它很容易带来混淆。
注意:
(1)在Java 8版本中,如果在标识符中使用了下划线“_”,那么Java编译器会将其标记为警告。如果在lambda(正则)表达式中使用了下划线“_”,则直接将其标记为错误。
(2)从Java 10版本开始,在任何情况下使用下划线“_”都会被标记为错误。
代码中的注释是程序设计者与程序阅读者之间的通信桥梁,它可以最大限度地提高团队开发的效率。另外,注释也是程序代码可维护性的重要环节之一。所以程序员不能为写注释而写注释,而是应该以提高代码的可读性和可维护性来写注释。
因为注释不会影响程序的运行,与程序代码的功能无关,所以即使没有注释,也不会妨碍程序的功能。尽管如此,我们还是建议读者养成在代码中添加注释的习惯。在Java程序中有如下3种添加注释的方式。
(1)单行(single-line)注释:使用双斜杠“//”写一行注释内容。
(2)块(block)注释:使用“/*……*/”格式(以单斜杠和一个星号开头,以一个星号和单斜杠结尾)可以写一段注释内容。
(3)文档注释:使用“/**……*/”格式(以单斜杠和两个星号开头,以一个星号和单斜杠结尾)可以生成Java文档注释。文档注释一般用于方法或类。通常将Java注释分为两种,分别是单行注释和多行注释。
单行注释:单行注释用//表示,只能将注释内容写在一行中,例如:
//声明一个int类型的变量count(这就是单行注释,只能写在一行中,不能换行)
int count;
多行注释:多行注释以 /* 开头、以*/结尾,可以一次性写多行注释内容,例如:
/*
* 先声明int类型变量count
* 然后使用for循环,设置每循环一次count会自动加一
*/
private int count;
for(int i = 0; i < 100; i++) {
++count;
}
例如,在前面的实例文件First.java中,我们可以在代码中添加以下单行注释和多行注释。
/*
多行注释开始:
开始定义一个类
类的名字是First
First中的F是大写的
*/
public class First{
/**
*文档注释部分
* main是一个方法,程序的执行总是从这个方法开始
* @author toppr(作者信息)
*
*/
public static void main(String [] args){
/*虽然是多行注释格式,但是也可以只写一行 */
System.out.println("Java是目前排名第一的编程语言!");//双斜杠单行注释:能够输出显示一段文本
}
}
在上述代码中,我们对3种注释方式都做了示范。其中,单行注释和块注释部分很容易理解;文档注释通常由多行构成,一般分多行分别介绍某个类或方法的功能、作者、参数和返回值的信息。
在Java语言中,方法main()被认为是应用程序的入口方法。也就是说,在运行Java程序的时候,第一个被执行的方法就是main()方法。这个方法与Java中的其他方法有很大的不同,比如方法的名字必须是main、方法的类型必须是public static void、方法的参数必须是一个String[]类型的对象等。在前面的实例文件First.java中,方法main()就负责了整个程序的加载与运行。如果一个Java程序没有main()方法,该程序就无法运行。
控制台(Console)的专业名称是命令行终端,通常简称为“命令行”,是无图形界面程序的运行环境,它会显示程序在运行时输入/输出的数据。我们在图1-15中看到的就是控制台在输入“java -version”命令之后所显示的信息。当然,控制台程序只是众多Java程序中的一类,本书前面章节的实例都是控制台程序。例如,实例文件First.java就是一个控制台程序,执行后会显示一个控制台界面效果,如图1-18所示。具体执行方法可参看本章后面的内容。
图1-18 执行效果是一个控制台界面
在Java语言中,通常使用System.out.println()方法将需要输出的内容显示到控制台中。例如,在前面的实例文件First.java中,就是使用如下代码在控制台中输出了文本“Java是目前排名第一的编程语言!”。
System.out.println("Java是目前排名第一的编程语言!");
知识点讲解:视频\第1章\编译并运行Java程序.mp4
↑扫码看视频
经过本章前面内容的讲解,相信大家对Java程序已经有了一个大致的了解。本节将详细讲解编译并运行Java程序的知识。
在运行Java程序之前,首先要将它的代码编译成可执行的程序,为此,我们需要用到javac命令。由于我们前面已经把javac命令所在的路径添加到了系统的PATH环境变量中,因此现在可以直接调用该命令来编译Java程序。另外,如果直接在命令行终端中输入javac命令,后面不跟任何选项和参数,会输出大量与javac命令相关的帮助信息,读者在使用javac命令时可以参考这些帮助信息。在这里,我们建议初学者掌握javac命令的如下用法。
javac -d destdir srcFile
在上面命令中,-d是javac命令的选项,功能是指定编译生成的字节码文件的存放路径(即destdir),在这里,destdir必须是本地磁盘上的一个合法有效路径。而srcFile则表示的是Java源文件所在的路径,该路径既可以是绝对路径,也可以是相对路径。通常,我们总是会将生成字节码文件放在当前路径下,当前路径可以用点“.”来表示。因此,如果我们以之前的First.java为例,我们可以先进到它所在的路径,然后输入如下编译命令:
javac -d . First.java
假设First.java所在的路径为“H:\java3codes\001”,则整个编译过程在CMD控制台界面中的效果如图1-19所示。运行上述命令后会在该路径下生成一个编译后的文件First.class,如图1-20所示。
图1-19 CMD中的编译过程
图1-20 生成First.class文件
待完成编译之后,我们就需要用到java命令来运行程序。关于该命令,我们同样可以通过在命令行终端中直接输入不带任何参数或选项的java命令来获得其帮助信息。在这里,我们需要用到的java命令的格式如下所示:
java <main_class_name>//<main_class_name>表示Java程序中的类名
一定要注意,java命令后的参数应是该Java程序的主类名(即其main方法所在的类),它既不是字节码文件的文件名,也不是Java源文件名。例如,我们可以在命令行终端中进入First.class所在的路径,输入如下命令:
java First
上述命令会输出如下结果:
Java是目前排名第一的编程语言!
在控制台中的完整编译和运行效果如图1-21所示。
图1-21 在控制台中的完整编译和运行效果
另外需要提醒的是,初学者经常容易忘记Java是一门区分字母大小写的语言。例如,在下面的命令中,我们错误地将First写成了first,就会造成命令失败异常。
java first
从Java 11开始新增了一个特性:启动单一文件的源代码程序。单一文件程序是指整个程序只有一个源码文件。这时候我们只需在控制台中使用如下格式即可运行Java文件,从而省去上面介绍的编译环节。
java Java文件名
以上面的Java文件First.java为例,在运行之前先不编译它,而是希望Java启动器能直接运行文件First.java。此时只需用控制台命令切换到程序目录,然后运行如下所示的命令即可:
java First.java
假设文件First.java位于本地计算机的“H:\daima\001”目录下,则上述直接运行方式在控制台中的完整过程如下所示:
C:\Users\apple>h:
H:\>cd H:\daima\001
H:\daima\001>java First.java
Java是目前排名第一的编程语言! ⇽--- 这是运行Java文件First.java的结果,此方法省去了前面方式中的编译环节。但是在运行前一定要在“H:\daima\001”目录下删除以前生成过的编译文件First.class
在编写Java程序时,源文件名字不能随便起,需要遵循下面的两个规则。
(1)Java源文件的后缀必须是“.java”,不能是其他文件后缀名。
(2)一般来说,可以任意命名Java源文件的名字,但是当Java程序代码中定义了一个public类时,该源文件的主文件名必须与该public类(也就是该类定义使用了public关键字修饰)的类名相同。由此可以得出一个结论:因为Java程序源文件的文件名必须与public类的类名相同,所以一个Java源文件里最多只能定义一个public类。
有很多初学者经常犯一个错误,即在保存一个Java文件时保存成形如“*.java.txt”格式的文件名,因为这种格式文件名从表面看起来太像“*.java”了,所以经常会引发错误。要解决这个粗心的错误,我们可以修改Windows的默认设置。因为Windows系统的默认设置是“隐藏已知文件类型的扩展名”。在Windows系统中,单击顶部“查看”选项,然后在下面勾选“文件扩展名”复选框即可,如图1-22所示。
图1-22 勾选“文件扩展名”复选框
Java语言是严格区分字母大小写的语言,但是很多初学者对大小写问题往往不够重视。例如,有的读者编写的Java程序里的类是“first”,但当他运行Java程序时运行的是“java First”的形式。所以提醒读者必须注意,在Java程序中的First和first是不同的,必须严格注意Java程序中字母大小写的问题。在此建议广大读者,在按照书中实例程序编写Java代码时,必须严格注意Java程序中每个单词的大小写,不要随意编写,例如class和Class是不同的两个词,class是正确的,但如果写成Class则程序无法编译通过。这是因为Java程序里的关键字全部是小写的,无需大写任何字母。
笔者对初学者的建议是:(在学习本书的面向对象内容之前)尽量不要使用IDE工具,但现在是一个追求速成的年代,大多数人希望用最快的速度掌握Java技术。其实市面中的IDE工具较多,除了Eclipse、Jbuilde和NetBeans之外,还有IBM提供的WSAD、JetBrains提供的IntelliJ IDEA、IBM提供的VisualAge、Oracle提供的JDeveloper、Symantec提供的Visual Cafe以及BEA提供的WorkShop,每个IDE都各有特色,各有优势。如果从工具学起,势必造成对工具的依赖,当换用其他IDE工具时会变得不好适应。而如果从Java语言本身学起,把Java语法和基本应用熟记于心,到那时再使用IDE工具才会得心应手。
在我们日常使用的Windows平台上可以选择记事本来编码,如果认为Windows下记事本的颜色太单调,可以选择使用EditPlus、UltraEdit、VS Code和sublime text等工具。
如果实在要用IDE工具,例如Eclipse,则建议纯粹将它作为一款编辑器来用,将所有代码靠自己一个个字符地输入来完成,而不是靠里面的帮助文档和操作菜单来完成编码工作。
很多初学者对JDK和JRE比较迷糊,不知道两者到底有什么异同。
(1)JRE:表示Java运行时环境,全称是Java Runtime Environment,是运行Java程序的必需条件。
(2)JDK:表示Java标准版开发包,全称是Java SE Development Kit,是Oracle提供的一套用于开发Java应用程序的开发包,它提供了编译、运行Java程序所需的各种工具和资源,包括Java编译器、Java运行时环境以及常用的Java类库等。
Oracle把Java分为Java SE、Java EE和Java ME共3部分,而且为Java SE和Java EE分别提供了JDK和Java EE SDK (Software Development Kit)两个开发包。如果读者只学习Java SE的编程知识,可以下载标准的JDK,如果学完Java SE之后还需要继续用Java EE相关内容,就必须下载Java EE SDK。
一般来说,如果我们只是要运行Java程序,可以只安装JRE,而无需安装JDK。但是如果要开发Java程序,则应该安装JDK。安装JDK之后就包含JRE了,也可以运行Java程序。
Java API文档是Java官方为广大程序员提供的一份福利,里面详细介绍了类、方法和变量的解释说明。如果开发人员对正在使用的类不熟悉,希望查看类里面定义的变量或方法,可以打开Java API文档进行阅读和查看。Oracle官网上的在线Java API文档如图1-23所示。
图1-23 Oracle官网上的在线Java API文档
(1)登录Java官网,寻找Java 8、Java 9和Java 14的官方文档。
(2)登录Java官网,了解Java 13和Java 14的新特性。