Java程序设计基础(第6版)(txt+pdf+epub+mobi电子书下载)


发布时间:2020-07-07 08:36:20

点击下载

作者:鲜征征,陈磊,李梅生,刘秋莲,刘洋,陈国君

出版社:清华大学出版社

格式: AZW3, DOCX, EPUB, MOBI, PDF, TXT

Java程序设计基础(第6版)

Java程序设计基础(第6版)试读:

前言

本书自2006年面市以来,深受广大读者的好评,市场反应非常热烈,一直畅销,经久不衰。尤其是本书的第3版被“中国书刊发行业协会”评为全行业优秀畅销教材后,市场需求量更是迅速倍增。为了能适应Java技术的快速发展和计算机教学的需要,清华大华出版社和本书作者在征求广大读者的意见和建议的基础上,决定修订再版,以便更好地满足广大读者的需求。

本次改版,增加了注解、反射、Lambda表达式等内容,去掉了小程序设计的内容。书中例题采用目前最新的Java 10技术重新编写,尤其是图形界面程序设计中例题采用目前最流行的JavaFX 2.2架构重新编写,充分体现了新技术的特点。每个例题都突出一个编程的知识点,并保持原书的由浅入深、循序渐进、突出重点、分解难点的编写特色,使本版书在体系结构、内容组织、语言表达等方面都更加完善,同时使学生感到学习Java编程是一种兴趣,而兴趣又成为学习Java语言的动力,让学生在学习的乐趣中掌握Java的基本编程技巧。这种良性循环都归功于本书对内容的精选和组织结构的合理性,衷心地希望本书能成为广大读者的良师益友。

正是由于本书优化的知识体系,通俗易懂的讲解方式,对知识点的透彻分析和灵活实用的举例,因而深受读者的欢迎,这也是催生本书再版的主要原因。由于Java技术的内容庞大、结构复杂,所以从其中抽出基本的内容,并能以通俗的方式介绍给读者并非易事,所以本书难免存在不尽如人意的地方,因此希望广大读者继续能对本书提出合理化建议,使本书更加完善。由于计算机技术发展很快,加之作者水平有限,书中难免有不足之处,欢迎广大读者斧正。

书中所有例题全部在JDK 10环境下编译通过并运行。

本书由陈国君、陈磊、李梅生、刘洋、鲜征征、刘秋莲共同修改完成。

本教材的再版,得到了清华大学出版社的大力支持,在此本书全体作者对清华大学出版社的大力支持,尤其是编辑刘向威博士的热心关注、建议与指导,表示衷心的感谢!作 者2018年10月第1章 Java语言概述

本章主要内容:● Java语言的特点;● Java源文件(.java)与Java字节码文件(.class);● Java应用程序和Java小程序的主类;● Java虚拟机;● Java程序的种类和结构。

Java语言是一种简单易用、完全面向对象、与平台无关、安全可靠、主要面向Internet的开发工具。1.1 Java语言的诞生与发展

Java语言诞生于20世纪90年代初期,从它正式问世以来,它的快速发展已经让整个Web世界发生了翻天覆地的变化。Java语言的前身是Sun Microsystems公司(Sun公司于2009年4月被Oracle公司收购)开发的一种用于智能化家电的名为Oak(橡树)的语言,它的基础是当时最为流行的C和C++语言。但是,由于一些非技术上的原因,Oak语言并没有得到迅速的推广。直到1993年,WWW(万维网)迅速发展,Sun公司发现可以利用Oak语言的技术来创造含有动态内容的WWW网页,于是已受人冷落的Oak语言又被重新开发和改造,并将改造后的Oak语言改名为Java语言。Java是太平洋上的一个盛产咖啡的岛屿的名字。终于,在1995年,Java这个被定位于网络应用的程序设计语言被正式推出。

由于Java语言功能强大,其问世后不久,即被业界广泛接受,于是IBM、Apple、DEC、Adobe、HP、Oracle、Toshiba、Netscape和Microsoft等大公司均购买了Java语言的许可证。Microsoft公司还从其Web浏览器Explorer 3.0版起开始增加了对Java语言的支持。同时,众多的软件开发商也开发了许多支持Java的产品。在目前以网络为中心的计算机时代,不支持HTML和Java语言,就意味着应用程序的应用范围只能限于同质的环境。

随着Java Servlet的推出,Java语言极大地推动了电子商务的发展。Java Server Page(JSP)技术的推出,更是让Java语言成为基于Web应用程序的首选开发工具。Internet的普及和迅猛发展,以及Web技术的不断渗透,使得Java语言在现代社会的经济发展和科学研究中占据越来越重要的地位。1.2 Java语言的特点

Java语言是一种跨平台、适合于分布式计算环境的面向对象编程语言。它具有简单、面向对象、分布式、解释型、可靠性、安全、平台无关、可移植、高性能、多线程、动态性等特点。下面介绍Java语言的几个重要特性。1. 简单易学

Java语言虽然衍生自C++语言,与C++语言相比Java语言是一种完全面向对象的编程语言。出于安全性和稳定性的考虑,Java语言去掉了C/C++语言支持的三个不易理解和掌握的数据类型:指针(pointer)、联合体(unions)和结构体(structs)。而C/C++语言中联合体和结构体的功能,完全可以在Java语言中用类及类的属性等面向对象的方法来实现,这不但更加合理规范,而且还降低了学习难度。2. 面向对象

Java语言最吸引人之处,就在于它是一种以对象为中心、以消息为驱动的面向对象的编程语言。面向对象的语言都支持封装、继承和多态三个概念,Java语言也是如此。3. 平台无关性

Java语言是与平台无关的语言,这是指使用Java语言编写的应用程序不用修改就可在不同的软硬件平台上运行。平台无关有两种:源代码级和目标代码级。C和C++语言具有一定程度的源代码级平台无关,即用C和C++语言编写的应用程序不用修改只需重新编译就可以在不同平台上运行。Java语言是靠Java虚拟机(JVM)在目标代码级实现平台无关性的。4. 分布式

分布式包括数据分布和操作分布。Java语言支持这两种分布性。Java语言提供了一整套网络类库,开发人员可以利用类库进行网络程序设计,方便地实现Java语言的分布式特性。5. 可靠性

Java语言具有很高的可靠性。Java解释器运行时实施检查,可以发现数组和字符串访问的越界;另外,Java语言提供了异常处理机制,可以把一组错误的代码放在一个地方,这样可以简化错误处理任务,便于恢复。6. 安全性

Java语言具有较高的安全性。当Java字节码进入解释器时,首先必须经过字节码校验器的检查;其次,Java解释器将决定程序中类的内存布局;再次,类装载器负责把来自网络的类装载到单独的内存区域,避免应用程序之间相互干扰破坏;最后,客户端用户还可以限制从网络上装载的类只能访问某些文件系统。Java语言综合了上述几种机制,成为安全的编程语言。7. 支持多线程

Java语言在两方面支持多线程:一方面,Java环境本身就是多线程的,若干系统线程运行,负责必要的无用单元回收、系统维护等系统级操作;另一方面,Java语言内置多线程机制,可以大大简化多线程应用程序开发。8. 支持网络编程

Java语言通过它所提供的类库可以处理TCP/IP,用户可以通过URL地址在网络上很方便地访问其他对象。9. 编译与解释并存

Java语言的编译器并不是把源文件(.java)编译成二进制码,而是将其编译成一种独立于机器平台的字节码文件(.class文件)。字节码文件可以被Java解释器执行,由解释器将字节码文件再翻译成二进制码,使程序得以运行。1.3 Java语言规范

Java语言有严格的使用规范。Java语言规范是对语言的技术定义,包括Java程序设计语言的语法和语义。如果编写程序时没有遵守这些规范,计算机就不能理解程序。Java语言还为开发Java程序而预定义了类和接口,称为应用程序接口(Application Program Interface, API)。

目前,Java技术主要包括如下三个方面。

Java SE (Java Platform Standard Edition): Java平台的标准版,可以用于开发客户端应用程序。应用程序可以独立运行或作为Applet在Web浏览器中运行。

Java ME (Java Platform Micro Edition): Java平台的精简版,用于开发移动设备的应用程序。不论是无线通信还是手机、PDA等小型电子装置,均可采用Java ME作为开发工具及应用平台。

Java EE (Java Platform Enterprise Edition): Java平台的企业版,用于开发服务器端的应用程序,为企业提供了e-Business架构及Web服务。其优越的跨平台能力与开放的标准,深受广大企业用户的喜爱。

由于Java SE是基础,其他Java技术都基于Java SE,所以本书采用目前最新版本Java SE 10介绍Java程序设计。与Java SE 10对应的Java开发工具包称为JDK 10。1.4 Java虚拟机

大部分的计算机语言程序都必须先经过编译(compile)或解释(interpret)的操作后,才能在计算机上运行,然而,Java程序(.java文件)却比较特殊,它必须先经过编译的过程,然后再利用解释的方式来运行。通过编译器(compiler),Java程序会被转换成与平台无关(platform-independent)的机器码,Java称之为“字节码”(byte-codes),字节码文件的扩展名为.class。通过Java的解释器(interpreter)便可解释并运行Java的字节码。图1.1说明了Java程序的执行过程。图1.1 Java程序的运行过程:先编译,后解释

字节码是Java虚拟机(Java Virtual Machine, JVM)的指令组,和CPU上的微指令码很相像。Java程序编译成字节码后文件尺寸较小,便于网络传输。

字节码最大的好处是可跨平台运行,即Java的字节码可以编写一次,到处运行。用户使用任何一种Java编译器将Java源程序(.java)编译成字节码文件(.class)后,无论使用哪种操作系统,都可以在含有JVM的平台上运行。这种跨越平台的特性也是让Java语言急速普及的原因之一。

任何一种可以运行Java字节码的软件均可被看成Java的“虚拟机”(JVM),如浏览器与Java的开发工具等皆可被视为一部JVM。很自然地,可以把Java的字节码看成JVM上所运行的机器码(machine code),即JVM中的解释器负责将字节码解释成本地的机器码。所以从底层上看,JVM就是以Java字节码为指令组的“软CPU”。可以说,JVM是可运行Java字节码的假想计算机。它的作用类似于Windows操作系统,只不过在Windows上运行的是.exe文件,而在JVM上运行的是Java字节码文件,也就是扩展名为.class的文件。JVM其实就是一个字节码解释器。1.5 Java程序的种类和结构

使用Java语言可以编写两种类型的程序:Application(应用程序)和Applet(小程序)。这两种程序的开发原理是相同的,但是在运行环境和计算结构上却有着显著的不同。

应用程序是从命令行运行的程序,它可以在Java平台上独立运行,通常称为Java应用程序。Java应用程序是独立完整的程序,在命令行调用独立的解释器软件即可运行。另外,Java应用程序的主类包含有一个定义为public static void main(String[]args)的主方法,这个方法是Java应用程序的标志,同时也是Java应用程序执行的入口点,在应用程序中包含有main()方法的类一定是主类,但主类并不一定要求是public类。

小程序是嵌入在HTML(超文本标记语言)文档中的Java程序,需要搭配浏览器来运行,因此称为小程序。由此可见,当运行一个Java小程序时,同时还要为它编写一个HTML文件,然后在WWW浏览器中运行这个HTML文件,就可以激活浏览器中的Java解释器。另外,也可以调用一些能够模拟浏览器环境并执行Java小程序的软件来直接运行Java小程序。由于浏览器受安全控制的限制,所以Java小程序一般使用模拟浏览器环境的软件来执行。

一个复杂的程序可以由一个或多个Java源文件构成,每个文件中可以有多个类定义。下面的程序是一个Java应用程序文件。

说明:为了便于对程序代码的解释,本书在每行代码之前加一标号,它们并不是程序代码的一部分。

从这个程序可以看出,一般的Java源程序文件由以下三部分组成:● package语句(0个或1个);● import语句(0个或多个);● 类定义(1个或多个类定义)。

其中,package语句表示该程序所属的包。它只能有一个或者没有。如果有,必须放在最前面;如果没有,表示本程序属于默认包。

import语句表示引入其他类库中的类,以便使用。import语句可以有0或多个,它必须放在类定义的前面。

类定义是Java源程序的主要部分,每个文件中可以定义若干类。

Java程序中定义类使用关键字class,每个类的定义由类头定义和类体定义两部分组成。类体定义部分用来定义属性和方法这两种类的成员,其中方法类似于其他高级语言中的函数,而属性则类似于变量。类头部分除了声明类名之外,还可以说明类的继承特性,当一个类被定义为是另一个已经存在的类(称为父类)的子类时,它就可以从其父类中继承一些已定义好的类成员而不必自己重复编码。

在类体中通常有两种组成成分:一种是域,包括变量、常量、对象、数组等独立的实体;另一种是方法,类似于函数的代码单元块。这两种组成成分通称为类的成员。在上面的例子中,类App1_1中只有一个类成员,即第5行定义的方法main()。用来标志方法头的是方法名后面的一对小括号,小括号里面是该方法使用的形式参数,方法名前面的public用来说明这个方法属性的修饰符,其具体语法规定将在第6章中介绍。方法体部分由若干以分号“;”结尾的语句组成,并由一对大括号{}括起来,在方法体内部不能再定义其他的方法。

同其他高级语言一样,语句是构成Java程序的基本单位之一。每一条Java语句都以分号“;”结束,其构成应该符合Java语言的语法规则。类和方法中的所有语句应该用一对大括号{}括起来。除package及import语句之外,其他执行具体操作的语句,都只能存在于类的大括号之中。

比语句更小的语言单位是表达式、变量、常量和关键字等,Java的语句就是由它们构成的。其中,声明变量与常量的关键字是Java语言语法规定的保留字,用户程序定义的常量和变量的取名不能与保留字相同。

Java源程序的书写格式比较自由,如语句之间可以换行,也可以不换行,但养成一种良好的书写习惯比较重要。

注意:Java是严格区分字母大小写的语言。书写时,大小写不能混淆。

一个程序中可以有多个类,但只能有一个类是主类。在Java应用程序中,这个主类是指包含main()方法的类。在Java小程序里,这个主类是一个继承自系统类JApplet的子类。应用程序的主类不一定要求是public类,但小程序的主类一定要求是public类。主类是Java程序执行的入口点。本章小结

1. Java程序比较特殊,它必须先经过编译的过程,然后再利用解释的方式来执行。即首先要将源程序(.java文件)通过编译器将其转换成与平台无关的字节码文件(.class文件),然后再通过解释器来解释执行字节码文件。

2. 字节码(byte-codes)最大的好处是可跨平台执行,可让程序“编写一次,到处运行(write once,run anywhere)”的梦想成真。

3. Java程序可分为两种:一种是Application,称为Java应用程序;另一种是Applet,称为Java小程序。Java应用程序是指可以在Java平台上独立运行的一种程序;而Java小程序则是内嵌在HTML文件里,需要在浏览器的支持下才能运行。

4. 无论是应用程序还是小程序都必须有一个主类,主类是程序执行的入口点,应用程序的主类是包含有main()方法的类,但应用程序的主类并不一定要求是public类;小程序的主类是一个继承自系统类JApplet的子类,且该类必须是public类。第1章习题

1.1 Java语言有哪些特点?

1.2 什么是Java虚拟机?

1.3 什么是字节码?采用字节码的最大好处是什么?

1.4 什么是平台无关性?Java语言是怎样实现平台无关性的?

1.5 Java语言程序有几种?每种程序的结构包含哪几个方面?

1.6 什么是Java程序的主类?应用程序与小程序的主类有何不同?第2章 Java语言开发环境

本章主要内容:● Java开发工具的下载与安装;● JDK开发环境的配置;● Java源文件的命名规则;● 在JDK环境中编译与运行Java应用程序。

Java开发工具早年是Sun公司所开发的一套Java程序开发软件,由于Sun公司于2009年4月被Oracle公司收购,所以现在它可在Oracle公司的网站免费取得。它与JDK的帮助文档(Java docs)一起是编写Java程序必备的工具。2.1 Java开发工具

Java开发工具(Java SE Development Kits, JDK)是许多Java程序员使用的开发环境。尽管许多编程人员已经使用第三方的开发工具,但JDK仍被当作Java程序开发的重要工具。

JDK由Java API、Java运行环境和一组建立、测试工具的Java实用程序等组成。其核心是Java API,所谓API(Application Programming Interface)就是Java提供的标准类库供编程人员使用,开发人员需要用这些类来实现Java语言的功能。Java API包括一些重要的语言结构以及基本图形、网络和文件I/O等。

作为JDK的实用程序,工具库中的主要程序都放在JDK安装文件夹下,其中bin子文件夹中包含了所有相关的可执行文件,下面是bin文件夹下的常用命令。● javac.exe: Java编译器,将Java源代码文件转换成字节码文件;● java.exe: Java解释器,执行Java程序的字节码文件;● appletviewer.exe:小程序浏览器,执行嵌入在HTML文件中的Java小程序的Java浏览器;● javadoc.exe:根据Java源代码及注释语句生成Java程序的HTML格式的帮助文档;● jdb.exe: Java调试器,可以逐行执行程序、设置断点和检查变量;● jar.exe:创建扩展名为.jar(Java Archive, Java归档)的压缩文件,与zip压缩文件格式相同;● jmod.exe:创建扩展名为.jmod的压缩文件。2.1.1 JDK的下载与安装

Oracle公司提供了多种操作系统下的JDK,随着时间的推移和技术进步,JDK版本也在不断地升级。各种操作系统下的JDK的各种版本在使用上基本相似,用户可以根据自己的使用环境,从Oracle公司的网站上下载相应的JDK版本,一般情况下是越新越好。本教材使用的是JDK 10版本。1. 下载JDK

进入到Java SE 10的下载网页后,根据自己所用的操作系统(Windows、Mac OS、Linux)选择不同的链接下载。本书的例子是在Windows系统的64位机器上开发的,所以下载的是jdk-10_windows-x64_bin.exe,此即JDK 10版的安装文件。2. 安装JDK

下载得到JDK文件之后,双击JDK安装文件jdk-10_windows-x64_bin.exe即可进行安装。用户只需按JDK的安装步骤和提示进行安装即可,安装过程中用户可以选择欲安装的项目,但建议使用默认值。安装完毕后,将JDK安装到C:\Program Files\Java\jdk-10文件夹下,此文件夹称为JDK安装文件夹或安装路径。在该文件夹下有如下子文件夹。● bin:该文件夹存放javac.exe、java.exe、jmod.exe、jar.exe等命令程序;● conf:该文件夹存放一些可供开发者编辑的Java系统配置文件;● include:该文件夹存放支持本地代码编程与C程序相关的头文件;● jmods:该文件夹存放预编译的Java模块,相当于JDK 9之前的.jar文件;● legal:该文件夹存放有关Java每个模块的版权声明和许可协议等;● lib:该文件夹存放Java类库。

以前用户可以将.class文件打包成.jar文件,但在Java 9之后的版本中,既可以使用jar.exe命令将.class文件打包成.jar文件,也可以使用jmod.exe命令将.class文件打包成.jmod文件。在Java 9之前的rt.jar,tools.jar等被JDK 10下的jmods文件下∗.jmod文件所代替。

说明:在JDK安装过程中,除了安装JDK外,还安装了Java运行环境(Java Runtime Environment, JRE)。JRE是Java执行程序所必需的,主要用于为开发好的Java程序提供执行平台,安装在C:\Program Files\Java\jre-10文件夹下。2.1.2 设置JDK的操作环境

在使用Java编译与运行程序之前,必须先设置系统环境变量。所谓系统环境变量就是在操作系统中定义的变量,可供操作系统上的所有应用程序使用。为此,需要设置系统环境变量Path。Path环境变量的作用是设置供操作系统去寻找可执行文件(如.exe、.com、.bat等)的路径,对Java而言即Java的安装路径,如果操作系统在当前文件夹下没有找到想要执行的程序或命令,操作系统就会按照Path环境变量指定的路径依次去查找,以最先找到的为准。Path环境变量可以存放多个路径,路径与路径之间用分号“;”隔开。

下面介绍在Windows 7操作系统里设置系统环境变量Path的方法。(1)选择“控制面板”→“系统和安全”→“系统”选项(或在桌面上右击“计算机”或“我的电脑”图标,在弹出的快捷菜单中选择“属性”命令;又或在Windows 7下按Win+Pause键),在弹出的窗口的左侧窗格中选择“高级系统设置”选项,弹出“系统属性”对话框,在该对话框中选择“高级”选项卡,如图2.1所示。在“高级”选项卡中单击“环境变量”按钮后,弹出如图2.2所示的“环境变量”对话框。(2)在“环境变量”对话框中单击“系统变量”区域下面的“新建”按钮添加系统变量Java_Home,在弹出的“新建系统变量”对话框的“变量名”文本框中输入“Java_Home”,在“变量值”文本框输入“C:\Program Files\Java\jdk-10”,该值就是JDK的安装路径,如图2.2所示,单击“确定”按钮返回“环境变量”对话框。图2.1 “系统属性”对话框中的“高级”选项卡图2.2 新建系统变量Java_Home(3)在“环境变量”对话框的“系统变量”区域里,先选择Path变量,再单击“编辑”按钮,此时弹出“编辑系统变量”对话框。在“变量值”文本框中原有字符串的最前面输入“%Java_Home%\bin;”(其后的分号“;”是路径分隔符),如图2.3所示。设置完成后单击“确定”按钮。图2.3中的设置就是将JDK的bin路径与系统路径之和设置为当前系统路径。图2.3 设置Path环境变量

如果在“环境变量”对话框里找不到Path变量,则单击“系统变量”区域里的“新建”按钮,在出现的“新建系统变量”对话框里填上如图2.3所示的内容。最后在“环境变量”对话框里单击“确定”按钮,再关闭“系统属性”对话框即完成路径的设置。

说明:如果不创建系统变量Java_Home,则必须将“C:\Program Files\Java\jdk-10\bin;”添加到已存在的Path路径值的最前面。设置系统变量Java_Home的好处主要是便于维护系统变量Path。

对于系统变量类路径ClassPath,自从JDK 5以后版本就不用再设置,所以在Java 10中不用设置类路径ClassPath, Java程序完全可以编译与运行,但用户需要理解类路径的作用。ClassPath环境变量的作用与Path的作用相似,ClassPath是JVM执行Java程序时搜索类(.class)文件的路径(类所在的文件夹)的顺序,以最先找到的为准。JVM查找类的过程,同Windows查找可执行文件的过程稍有不同,它默认不会在当前文件夹下查找,除非设置查找当前文件夹,否则只查找ClassPath指定的文件夹。即JVM除了在ClassPath的环境变量指定的文件夹中查找要运行的类之外,是不会在其他文件夹下查找相应类的,由此可知ClassPath环境变量的作用就是告诉Java解释器在哪里找到.class文件及相关的库程序。

若用户想自己设置ClassPath,可按如下方法操作。在“系统变量”对话框中,单击“新建”按钮,弹出“新建系统变量”对话框,在“变量名”文本框中输入“ClassPath”,在“变量值”文本框输入“.;C:\Program Files\Java\jre-10\lib”,然后单击“确定”按钮即可,如图2.4所示。图2.4 新建ClassPath系统变量

其中路径最前面的“.”代表JVM运行时的当前文件夹,表示让JVM在任何情况下都会先去当前文件夹下查找要使用的类。“C:\Program Files\Java\jre-10\lib”文件夹下包含的.jar文件采用的是.zip压缩格式的文件,其中包含着Java程序运行时所需的类(即.class字节码文件),使用时Java虚拟机能自动对其进行解压,所以可以把.jar文件当作一个文件夹使用。

注意:系统环境变量路径Path和类路径ClassPath也可以在命令行窗口中利用set命令进行设置(这种设置方法只在本次有效,重新开机后则无效)。例如: set path=C:\Program Files\Java\jdk-10\bin;%path% set classpath=%classpath%;.;C:\Program Files\Java\jre-10\lib

说明:在Windows系统中,通过%xxx%来表示xxx环境变量的当前值,例如环境变量Path的设置值为“C:\windows\system32;c\windows;”,则%path%就表示这个字符串。之所以将“C:\Program Files\Java\jdk-10\bin;”放在%path%的前面,是因为在“C:\windows\system32”下也有一个java.exe程序,这样当运行Java命令时,保证执行的是“C:\Program Files\Java\jdk-10\bin\java.exe”,而不是“C:\windows\system32\java.exe”。

注意:在本节路径的设置中,作者是将JDK 10安装在默认的C:\Program Files\Java\jdk-10文件夹里,如果读者没将它安装在这个文件夹,请自行将“C:\Program Files\Java\jdk-10\bin”修改成用户的安装位置。2.2 JDK帮助文档下载与安装

开发Java程序,除了需要JDK以外,拥有帮助工具也是很必要的。JDK也提供了它的帮助文档,使用户在遇到问题时能快速得到解答。下面介绍JDK帮助文档下载与安装操作。

可以到Oracle网站去下载JDK帮助文档,JDK 10帮助文档的压缩文件为jdk-10_doc-all.zip,需要用解压缩软件来释放它。下面的操作是以WinRAR为例进行解压缩的。(1)双击jdk-10_doc-all.zip压缩文件,在出现的WinRAR窗口中,单击“解压到”按钮后弹出“解压路径和选项”对话框,在该对话框的“常规”选项卡中选取JDK帮助文档所要保存的位置,建议保存到先前安装的JDK 10的文件夹中,其操作方式如图2.5所示。(2)在图2.5中单击“确定”按钮即可进行解压缩的操作。

解压完成后,可以在C盘中找到“C:\Program Files\Java\jdk-10”文件夹,在该文件夹中,可看到docs子文件夹,打开它之后可看到index.html文件,双击即可打开帮助文档。图2.5 选择JDK帮助文档的安装路径2.3 JDK的使用

安装完JDK并设置好相应的环境变量后,就可以利用JDK来编译、运行Java程序了。下面介绍如何以最简单的方式来编写、编译与运行Java应用程序。在开始编写程序代码之前,先在硬盘D(本教材使用D盘)中创建一个名为“java”的文件夹,本书所有的例子均存储于D:\java文件夹下。

说明:目前在Java领域有很多优秀的集成开发工具,如Eclipse IDE、NetBeans IDE、Interllij IDE、JDeveloper IDE等,但还是建议初学者直接使用Java SE提供的JDK,因为无论哪种集成开发环境都将JDK作为其核心,而且IDE界面操作复杂,还会屏蔽掉一些知识点,不利于初学者掌握基础知识。所以本教材用JDK在命令行方式下直接编译与运行Java程序。【例2.1】 编写一个Java应用程序(文件名App2_1.java),其功能是在DOS窗口上显示“Hello Java!”字符串。程序源文件代码如下:

Java应用程序源文件的命名规则:首先源文件的扩展名必须是.java;如果源文件中有多个类,则最多只能有一个public类,如果有,那么源文件的名字必须与这个public类的名字相同(文件名字符的大小写可以与public类名的大小写不同);如果源文件没有public类,那么源文件的名字由用户任意命名。

说明:(1)当源文件中有public类时,在命名时虽然要求文件名与public类的名称相同,且可以不区分大小写,但良好的命名习惯应该是源文件名与public类名大小写完全相同。(2)源文件名是由操作系统管理的,所以在使用javac命令编译源文件时,文件名是不区分大小写的。

注意:包含有main()方法的类是Java应用程序的主类,主类无论是否是public类,但执行程序时必须输入主类名,即“java主类名”,因为主类的main()方法是程序执行的起始点。

现在将源文件的内容输入记事本中,并把它存入D:\java文件夹内,根据Java对源文件命名规则的要求,必须将文件名命名为App2_1.java,如图2.6所示。图2.6 用记事本编写Java程序

在“另存为”对话框中将文件名设为App2_1.java,请勿用其他的名称,否则编译时出错。此外,在“保存类型”下拉列表框内选择“所有文件”,如果此处选择“文本文件(∗.txt)”,将造成文件名称为App2_1.java.txt,因而无法编译。

注意:在将Java源文件存盘之前,最好是先在计算机的窗口中,选择“工具”→“文件夹选项”命令,在弹出的“文件夹选项”对话框中选择“查看”选项卡,取消“隐藏已知文件类型的扩展名”前的复选框的选中状态,如图2.7所示。否则,由于系统隐藏了.txt扩展名,所以会误将文件名App2_1.java存储为App2_1.java.txt,造成编译时出错。

存好文件之后,接下来打开DOS窗口,并按下面的三个步骤来编译与运行App2_1.java。(1)打开DOS窗口,先将路径切换到保存App2_1.java的D:\java文件夹中,即在DOS窗口内输入: d: cd java(2)切换好路径后,执行下面的命令来编译App2_1.java。 javac App2_1.java图2.7 设置文件夹选项

在上面的命令中,javac是用来编译其后给出的Java程序,它是java与c的合成字,而c是compile(编译)的首字符。

编译好了之后,在D:\java文件夹内发现一个与文件名App2_1相同但扩展名为.class的文件。这个文件也就是byte-codes文件,即字节码文件。(3)编译好了之后,执行下面的命令来运行字节码文件(即App2_1.class): java App2_1则在命令提示符窗口输出: Hello Java!

注意:在运行字节码文件时,只需输入“java主类名”即可,此处的主类名是指字节码的文件名,但不能把“.class”也输进去,即不能输入“java App2_1.class”来运行程序,这样将会造成错误。本章小结

1. JDK的帮助文档(Java docs)与Java开发工具JDK(Java Development Kit)同样是编写Java程序必备的工具。它们均可在Oracle公司的网站免费取得。

2. JDK的核心是Java API,所谓API就是指Java所提供的供开发人员使用的标准类库。

3. 在使用Java语言编译与运行程序之前,必须先设置系统环境变量Path, Path环境变量的作用是设置供操作系统去寻找可执行文件的路径的顺序;在Java 10中不用设置类路径ClassPath,Java程序完全可以正常编译与运行。

4. Java应用程序源文件的命名规则:首先源文件的扩展名必须是.java;如果源文件中有多个类,则最多只能有一个public类,如果有,那么源文件的名字必须与这个public类的名字相同(文件名字符的大小写可以与public类名的大小写不同);如果源文件没有public类,那么源文件的名字由用户任意命名。但需要注意的是:包含有main()方法的类是应用程序的主类,主类无论是否是public类,但执行时必须输入主类名,即“java主类名”,因为主类的main()方法是程序执行的起始点。

5. main()在Java应用程序里是一个相当特殊的方法,它一定要声明成public,使得在类的其他地方能调用到它,且main()方法没有返回值,所以在它之前要加上void关键字。

6. System.out是指标准输出,其后所跟的字符串println是由print与line所组成的,其意义是将它后面括号中的内容输出到标准输出设备——显示器上。

7. 由于Java程序是由类所组成的,所以在完整的Java程序里,至少必须有一个类。第2章习题

2.1 什么是JDK?什么是JRE?JDK与JRE的关系是什么?

2.2 Java开发工具JDK 10安装后,在安装文件夹下生成几个子文件夹?这些子文件夹中包含的内容有哪些?

2.3 环境变量Path和ClassPath的作用是什么?如何设置Path环境变量?

2.4 编写Java程序有哪些注意事项?

2.5 Java应用程序源文件的命名有什么规定?

2.6 Java应用程序的主类是什么样的类?

2.7 如何在命令行方式下编译与运行Java应用程序?第3章 Java语言基础

本章主要内容:● 数据类型;● 变量;● 基本类型变量;● 数据类型的转换规则;● 从键盘输入数据的语句格式;● 运算符。

本章主要介绍编写Java程序必须掌握的若干语言基础知识,包括数据类型、变量、常量、表达式等。掌握这些基础知识,是编写正确Java程序的前提条件。3.1 数据类型

程序在执行的过程中,需要对数据进行运算,也需要存储数据。这些数据可能是由使用者输入的,也可能是从文件中取得的,甚至是由网络上得到的。在程序运行的过程中,这些数据通过变量存储在内存中,以便程序随时取用。

数据存储在内存的一块空间中,为了取得数据,必须知道这块内存空间的位置,为了方便使用,程序设计语言用变量名来代表该数据存储空间的位置。将数据指定给变量,就是将数据存储到对应的内存空间;调用变量,就是将对应的内存空间中的数据取出来使用。

一个变量代表一个内存空间,数据就存储在这个空间中,使用变量名来取得数据非常方便,然而由于数据在存储时所需要的内存容量各不相同,不同的数据就必须要分配不同大小的内存空间来存储,因此在Java语言中对不同的数据用不同的数据类型来区分。

在程序设计中,数据是程序的必要组成部分,也是程序处理的对象。不同的数据有不同的数据类型,不同的数据类型有不同的数据结构、不同的存储方式,并且参与的运算也不相同。通常计算机语言将数据按其性质进行分类,每一类称为一种数据类型(data type)。数据类型定义了数据的性质、取值范围、存储方式以及对数据所能进行的运算和操作。程序中的每一个数据都属于一种类型,定义了数据的类型也就相应决定了数据的性质以及对数据进行的操作,同时数据也受到类型的保护,确保对数据不进行非法操作。

Java语言中的数据类型分为两大类:一类是基本数据类型(primitive types);另一类是引用数据类型(reference types),简称引用类型。基本数据类型是由程序设计语言系统所定义、不可再分的数据类型。每种基本数据类型的数据所占内存的大小是固定的,与软硬件环境无关。基本数据类型在内存中存放的是数据值本身。引用数据类型在内存中存放的是指向该数据的地址,不是数据值本身,它往往由多个基本数据类型组成,因此,对引用数据类型的应用称为对象引用,引用数据类型也被称为复合数据类型,在有的程序设计语言中称为指针。

基本数据类型有整型、浮点型、逻辑型和字符型;引用数据类型包括类、数组和接口等。本节只介绍基本数据类型,引用数据类型在5.1节中再进行介绍。

Java语言的数据类型实际上都是用类实现的,即引用对象的使用方式,同时Java语言也提供了类似C语言中简单类型的使用方式,即声明类型的变量。

Java语言定义了4类共8种基本类型,其中有4种整型、2种浮点型、1种布尔型和1种字符型,它们的分类及关键字如下。● 整型:byte,short,int,long。● 浮点型:float,double。● 布尔型:boolean。● 字符型:char。1. 整型

整数有正整数、零、负整数,其含义与数学中的含义相同。Java语言的整数有三种进制的表示形式。● 十进制:用多个0~9的数字表示,如123和—100,其首位不能为0。● 八进制:以0开头,后跟多个0~7的数字,如0123。● 十六进制:以0x或0X开头,后跟多个0~9的数字或a~f的小写字母或A~F的大写字母,a~f或A~F均表示值10~15,如0X123E。

Java语言定义了4种表示整数的类型:字节型(byte)、短整型(short)、整型(int)、长整型(long)。每种整型的数据都是带符号位的。Java语言的每种数据类型都对应—个默认的数值,使得这种数据类型变量的取值总是确定的,体现了其安全性。整型类型如表3.1所示。表3.1 Java语言的整数类型

一个整数隐含为整型(int型)。当要将一个整数强制表示为长整数时,需在后面加字母l或L。所以若声明long型变量的值超过int型的取值范围时,如果数的后面不加l或L,系统会认是int型而出错。2. 浮点型

Java语言用浮点型表示数学中的实数(浮点数),也就是既有整数部分又有小数部分的数。浮点数有两种表示方式。● 标准计数法:由整数部分、小数点和小数部分构成,如3.0,3.1415等。● 科学计数法:由十进制整数、小数点、小数和指数部分构成,指数部分由字母E或e跟上带正负号的整数表示,如123.45可表示为1.2345E+2。

浮点数用于需要小数位精确度高的计算。例如,计算平方根或三角函数等,都会产生浮点型的值。Java语言的浮点型有单精度浮点(float)和双精度浮点(double)两种,如表3.2所示。表3.2 Java语言的浮点数类型

一个浮点数隐含为double型。若在一个浮点数后加字母f或F,将其强制转换为float型,所以若声明float型变量时如果数的后面不加f或F,系统会认为是double型而出错。double型占8字节,有效数字最长为15位,之所以称它为double型,是因为它的精度是float型精度的2倍,所以又称为双精度型。3. 布尔型

布尔型(boolean)也称为逻辑型,用来表示逻辑值。它只有true和false两个取值。其中,true代表“真”,false代表“假”,true和false不能转换成数字表示形式。

所有关系运算(如a>b)的返回值都是逻辑型的值。逻辑型也用于控制语句中的条件表达式,如if、while、for等语句。4. 字符型

字符型(char)用来存储单个字符。Java语言中的字符采用的是Unicode字符集编码方案,在内存中占2字节,是16位无符号的整数,一共有65 536个,字符的取值范围为0~65 535,表示其在Unicode字符集中的排序位置。Unicode字符是用“\u0000”到“\uFFFF”之间的十六进制数值来表示的,前缀“\u”表示是一个Unicode值,后面的4个十六进制值表示是哪个Unicode字符。Unicode字符表的前128个字符刚好是ASCII表。每个国家的字母表的字母都是Unicode表中的一个字符。由于Java语言的字符类型采用了Unicode这种新的国际标准编码方案,因而便于中文字符和西文字符的处理。因此,与其他语言相比,Java语言处理多语种的能力大大加强。

说明:(1)字符型数据的声明只能表示单个字符,且必须使用单引号将字符括上。(2)Java语言中所有可见的ASCII字符都可以用单引号括起来成为字符,如'a'、'B'、'∗'等。要想得到一个字符在Unicode字符集中的取值,必须强制转换成int类型,如(int)'a'。(3)由于字符型用来表示Unicode编码中的字符,所以字符型数据可以转化为整数,其值为0~65 535。但要取得该取值范围的数所代表的Unicode表中相应位置上的字符,必须强制转换成char型,如“int c=20320;char s=(char)c;”。

现将Java语言的4类8种基本数据类型总结归纳成表3.3。表3.3 Java语言的基本数据类型

为了使用上的方便,Java语言提供了数值型数据的最大值与最小值的标识符及常量值,如表3.4所示。表3.4 数值型常量的特殊值代码

说明:表3.4中表示浮点数float和double的最小值和最大值的常量分别为正数范围的最小值和最大值。若要取得负数范围的最小值或最大值,可用加负号的方法获得,如取得double型的最小负数可用如下语句:double min=—Double.MAX_VALUE。3.2 关键字与标识符1. 关键字

关键字(keyword)是Java语言中被赋予特定含义的一些单词,它们在程序中有着不同的用途,因此Java语言不允许用户对关键字赋予其他的含义。Java语言定义的关键字如表3.5所示。表3.5 Java语言定义的关键字2. 标识符

标识符(identifier)是用来表示变量名、类名、方法名、数组名和文件名的有效字符序列。也就是说,任何一个变量、常量、方法、对象和类都需要有名字,这些名字就是标识符。标识符可以由编程者自由指定,但是需要遵循一定的语法规定。标识符要满足如下规定:(1)标识符可以由字母、数字和下画线(_)、美元符号($)等组合而成;(2)标识符必须以字母、下画线或美元符号开头,不能以数字开头。

在实际应用标识符时,应该使标识符能在一定程度上反映它所表示的变量、常量、对象或类的意义,这样程序的可读性会更好。例如,i1、i2、count、value_add等都是合法的标识符,因关键字不能当作标识符使用,所以do、2count、high#、null等都是非法的标识符。

同时,应注意Java语言是大小写敏感的语言。例如,class和Class、System和system分别代表不同的标识符,在定义和使用时要特别注意这一点。

用Java语言编程时,经常遵循以下命名习惯(不是强制性的):类名首字母大写;变量名、方法名及对象名的首字母小写。对于所有标识符,其中包含的所有单词都应紧靠在一起,而且中间单词的首字母大写。例如,ThisIsAClassName,thisIsMethodOrFieldName。若定义常量时,则所有字母大写,这样便可标志出它们属于编译期的常数。Java包(package)属于一种特殊情况,它们全都是小写字母,即便中间的单词亦是如此。3.3 常量

常量存储的是在程序中不能被修改的固定值,即常量是在程序运行的整个过程中保持其值不改变的量。Java语言中的常量也是有类型的,包括整型、浮点型、布尔型、字符型和字符串型。1. 整型常量

整型常量可以用来给整型变量赋值,整型常量可以采用十进制、八进制或十六进制表示。十进制的整型常量用非0开头的数值表示,如80,—30;八进制的整型常量用以0开头的数字表示,如016代表十进制的数字14;十六进制的整型常量用0x或0X开头的数值表示,如0x3E代表十进制的数字62。

整型常量按照所占用的内存长度又可分为一般整型常量和长整型常量,其中一般整型常量占用32位,长整型常量占用64位,长整型常量的尾部有一个字母l或L,如—32L、0L、3721L。2. 浮点型常量

浮点型常量表示的是可以含有小数部分的数值常量。根据占用内存长度的不同,可以分为一般浮点(单精度)常量和双精度浮点常量两种。其中,单精度常量后跟一个字母f或F,双精度常量后跟一个字母d或D。双精度常量后的d或D可以省略。

浮点型常量可以有普通的书写方法,如3.14f、—2.17d,也可以—23用指数形式,如2.8e-2表示2.8×10,58E3D代表58×10(双精度)。3. 布尔型常量

布尔型常量也称为逻辑型常量,包括true和false,分别代表真和假。4. 字符型常量

字符型常量是用一对单引号括起的单个字符,如'a','9'。字符可以直接是字母表中的字符,也可以是转义符,还可以是要表示的字符所对应的八进制数或Unicode码。

转义符是一些有特殊含义、很难用一般方式来表达的字符,如回车、换行等。为了表达清楚这些特殊字符,Java语言中引入了一些特别的定义。所有的转义符都用反斜线(\)开头,后面跟着一个字符来表示某个特定的转义符,如表3.6所示。表3.6 常用的转义符5. 字符串常量

字符串常量是用双引号括起的一串若干个字符(可以是0个)。字符串中可以包括转义符,但标志字符串开始和结束的双引号必须在源代码的同一行上。例如: "您好,刘女士!\n"6. 常量的声明

常量声明的形式与变量的声明形式基本一样,只需用关键字final标识,通常final写在最前面。例如: final intM AX=10; final float PI=3.14f;

试读结束[说明:试读内容隐藏了图片]

下载完整电子书


相关推荐

最新文章


© 2020 txtepub下载