Java实用教程(第3版)pdf/doc/txt格式电子书下载
本站仅展示书籍部分内容
如有任何咨询
请加微信10090337咨询
书名:Java实用教程(第3版)pdf/doc/txt格式电子书下载
推荐语:
作者:郑阿奇编
出版社:电子工业出版社
出版时间:2015-09-01
书籍编号:30468202
ISBN:9787121266225
正文语种:中文
字数:158823
版次:3
所属分类:教材教辅-大学
版权信息
书名:Java实用教程(第3版)
作者:郑阿奇
ISBN:9787121266225
版权所有 · 侵权必究
前言
Java是原Sun公司(现已被甲骨文公司收购)开发的新一代编程语言,其简单、面向对象、多线程、跨平台等特性深受人们的欢迎。目前,学习Java已经成为一种时尚和潮流。
2005年,为了满足教学和应用开发实践的要求,我们编写了《Java实用教程》一书,把学习和应用相结合,收到了较好的效果,后又修订出版了第2版。
《Java实用教程》(第3版)以Java最新的版本Java 8为基础,对第2版进行了全新改版,内容循序渐进、深入浅出,精心设计每一个示例,结构安排更为合理,使读者准确把握Java的知识点。实用教程一般在讲解一项内容后紧跟相关的实例演示,很多章节最后还配备了一个综合实例,使学习者综合应用已经学过的主要知识。实验部分也是通过实例先引导读者学习,再提出思考问题,最后在原来基础上让读者自己进行操作和练习编程。实例程序均在JDK 8(Java SE Development Kit 8 Update 45)上调试通过。全书以开源软件Eclipse作为Java的集成开发环境,这使得编写、调试、运行Java程序变得更为简便。
实际上,本教程不仅适合教学,也非常适合Java的各类培训,以及使用Eclipse编程开发应用程序的用户学习和参考。只要阅读本书,结合上机操作进行练习,就能在较短的时间内基本掌握Java知识及其应用技术。
与本书配套的同步电子课件,可直接用于课堂教学。书中的源代码和电子课件,可从华信教育资源网(http://www.hxedu.com.cn)上免费下载。
本书由南京师范大学姜乃松和殷红先编写,南京师范大学郑阿奇任主编并对全书进行统稿、定稿。其他一些同志参加本书的基础工作,在此表示诚挚的谢意。
参加本套丛书(《高等学校计算机教材》)编写的还有梁敬东、陆文周、丁有和、曹弋、陈瀚、徐文胜、张为民、钱晓军、顾韵华、彭作民、高茜、陈冬霞、徐斌、王志瑞、孙德荣、周怡明、刘博宇、郑进、周何骏、陶卫冬、严大牛、刘启芬、邓拼搏、俞琰、周怡君、吴明祥、于金彬、马骏等。
由于作者水平有限,不当之处在所难免,恳请读者批评指正。
意见及建议邮箱:easybooks@163.com。
编 者
2015年6月
第1部分 Java实用教程
第1章 Java语言及编程环境
1.1 Java语言简介
Java是由原Sun公司(现已被甲骨文公司收购)于1991年开发的编程语言,初衷是为智能家电的程序设计提供一个分布式代码系统。为了使整个系统与平台无关,采用了虚拟机器码方式,虚拟机内运行解释器,而针对每种操作系统均有其对应的解释器,这样Java就成了与平台无关的语言。后来Java技术被广泛应用于万维网,伴随因特网的普及迅速成长起来,取得了惊人的发展。1995年5月23日,Java语言诞生,次年1月发布了第一个开发包JDK 1.0,至JDK 1.1(1997.2.18)奠定了Java在计算机语言中的地位。从JDK 1.2(1998.12.8)开始,Java的应用平台逐步分化,演进成3个版本。
●Java SE—Java Standard Edition(标准版),主要用于普通PC机、工作站的Java控制台或桌面程序的基础开发。
●Java ME—Java Micro Edition(微型版),用于移动设备、嵌入式设备上的Java应用程序开发。
●Java EE—Java Enterprise Edition(企业版),用于开发、部署和管理企业级、可扩展的大型软件或Web应用。
本书程序设计涉及的只是Java SE。2004年9月30日发布的Java SE 1.5(基于JDK 1.5)对Java语言本身进行了很大革新,引入许多新的概念和特性,成为Java发展史上的里程碑。为显示这个版本的重要,Sun将其更名为Java SE 5.0。在2005年6月召开的JavaOne大会上,Sun公司又公开了Java SE 6.0。2009年4月20日,甲骨文公司以74亿美元天价收购了Sun公司并取得了Java的版权,之后又持续推出Java SE 7.0(2011.7.28)和Java SE 8.0(2014.3.18),Java技术日臻成熟完善。如今Java已然成为计算机软件开发领域最流行的语言和平台之一。本教材就以Java SE 8.0(基于最新JDK 1.8.0,简称Java 8)为编程环境,全面系统地来讲授Java程序设计的知识。
1.1.1 Java语言特点
Java是一个广泛使用的网络编程语言,它简单、面向对象,不依赖于机器结构,不受 CPU和环境限制,具有可移植性、安全性,并提供了多线程机制,具有很高的性能。此外,Java还提供了丰富的类库,使程序设计人员能很方便地建立自己的系统。概括起来说,Java语言具有如下特点。
(1)简单性。Java语言虽衍生自C/C++,但它略去了C/C++中指针、运算符重载、多重继承等复杂的概念,并通过自动垃圾收集机制大大简化了程序员的内存管理工作。另外,Java对环境的要求非常低,它的基本解释器及类仅几十个KB,加上标准类库和线程的支持也只有大约200KB。
(2)面向对象。Java是一个完全面向对象的语言,其程序设计集中于对象及其接口,它提供了简单的类机制及动态的接口模型。对象中封装了它的状态变量及相应方法,实现了模块化和信息隐藏;而类则提供了一类对象的原型,通过继承机制,子类可使用父类的方法,实现代码复用。
(3)分布式。Java是面向网络的语言,通过它提供的类库可以处理TCP/IP协议,用户可以通过URL地址在网络上很方便地访问其他对象。
(4)安全性。因Java不支持指针,一切对内存的访问都必须通过对象的实例来完成,这就有效防止了黑客使用“特洛伊”木马等欺骗手段访问对象的私有成员,同时也避免了由于指针操作失误导致的程序或系统崩溃。
(5)可移植性。与平台无关的特性使Java程序可以很方便地被移植到不同软硬件平台的计算机上。同时,Java自身的类库也实现了与不同平台的接口,使这些类库更容易移植。(6)高性能。和其他解释执行的语言不同,Java字节码的设计使之能很容易地直接转换成对应于特定CPU的机器码,从而得到较高的性能。
(7)支持多线程。多线程机制使应用程序能够并发地执行,同步机制又保证了对共享数据的正确操作。通过使用多线程,程序员可以分别用不同的线程完成特定的行为,而不需要采用全局的事件循环机制,这样就很容易地实现网络上的实时交互行为。
1.1.2 Java运行机制
Java有两个核心的运行机制:一个是Java虚拟机(Java Virtual Machine,JVM);另一个是垃圾收集机制(Garbage Collection)。
1.Java虚拟机
Java虚拟机(JVM)可理解成一个以字节码为机器指令的CPU。首先,Java编译程序将后缀名为.java的Java源程序编译为JVM可执行的代码(后缀名为.class的Java字节码文件),如图1.1所示,运行JVM字节码的工作则由解释器来完成。整个运行过程分代码的装入、校验和执行三步进行:装入代码的工作由类装载器完成,类装载器负责装入一个程序运行所需要的所有代码;字节码校验器负责代码的校验;解释器负责代码的执行。每种类型的操作系统都有一种对应的JVM,JVM屏蔽了底层操作系统的差异,使Java程序能够做到“一次编译,到处运行”。
2.垃圾收集器
Java垃圾收集器能够自动回收垃圾,即运行时无用对象占据的内存空间。而在C/C++中,垃圾收集工作全都要由程序员负责,这无疑增加了程序员的负担。Java语言通过提供一种系统级线程来自动跟踪程序运行时存储空间的分配情况,并在JVM空闲时检查并释放那些可被释放的存储空间。在Java中,对象一旦被创建就会在堆区中分配一块内存,而当对象不再被程序引用时,它就变成一个“垃圾”,所占用的堆空间可被回收以便腾出来给后续的新对象使用。Java垃圾收集器能断定哪些对象不再被引用,并且能够把它们所占据的堆空间释放出来。
图1.1 Java程序执行机制
1.1.3 Java 8新特性
Java 8是继Java SE 5.0以来对Java语言的又一次重要升级,包含了许多令人欣喜的新特性,下面简单列出主要的几个。
(1)lambda表达式。这种新的语法为Java添加了函数式编程特性,可以简化并减少程序中创建特定结构(如某些类型的匿名类)所需的代码量,使得Java语言更为灵活和富有生命力。
(2)新的流API。流API支持对数据执行管道操作,并针对lambda表达式做了优化。
(3)简化的接口实现。Java 8中可以为接口指定的方法定义默认实现,如果程序员没有为默认方法创建实现,就使用接口定义的默认实现,在向接口添加新方法时也不会破坏现有方法。
(4)新的时间日期API。新增日期时间格式器增强了对时间日期类型数据的处理功能。
(5)支持JavaFX。JavaFX是Java新一代的GUI框架,它强大灵活,可制作出视觉效果十分出色的应用程序。此次升级的Java 8捆绑了对JavaFX 8的支持,以适应未来Java图形界面开发由AWT/Swing向JavaFX的平稳过渡。
Java 8新增的功能还有很多,本教材将在后续章节结合有关知识点逐一加以介绍。
1.2 Java编程环境
1.2.1 JDK 8
要想编译和运行Java程序,离不开Java的编译和运行环境。Sun公司(今为甲骨文公司)为Java提供一套原生的开发环境,通常称为JDK(Java SE Development Kits,JSDK)。目前最新的版本是Java SE Development Kit 8 Update 45,即JDK 8。
1.下载JDK 8
可以到甲骨文公司的官网下载JDK8:http://www.oracle.com/technetwork/java/javase/downloads/index.html,单击“DOWNLOAD”按钮,如图1.2所示,在出现的下载页上点击“jdk-8u45-windows-i586.exe”链接,下载对应Windows x86体系计算机的JDK。
2.安装JDK 8
下载完成后,得到可执行文件jdk-8u45-windows-i586.exe,双击启动安装向导,按照提示完成安装,这里JDK的安装路径取默认“C:\\Program Files\\Java\\jdk1.8.0_45\\”,如图1.3所示。
图1.2 选择下载JDK
图1.3 安装JDK
在JDK的安装包里带有JRE安装包,JRE是Java运行时的环境,默认安装到“C:\\Program Files\\Java\\jre1.8.0_45\\”。
3.配置环境变量
JDK安装完成之后,还需要配置环境变量才可使用,下面是具体设置步骤。
(1)打开“环境变量”对话框
右击桌面“计算机”图标,选择“属性”命令,在弹出的控制面板主页中点击“高级系统设置”链接,在弹出的“系统属性”对话框里单击“环境变量”按钮,弹出“环境变量”对话框,操作如图1.4所示。
(2)新建系统变量JAVA_HOME
在“系统变量”列表下单击“新建”按钮,弹出“新建系统变量”对话框。在“变量名”一栏输入“JAVA_HOME”,“变量值”栏输入JDK安装路径,如图1.5(a)所示,单击“确定”按钮。
(3)设置系统变量Path
在“系统变量”列表中找到名为“Path”的变量,单击“编辑”按钮,弹出“编辑系统变量”对话框,在“变量值”字符串中加入路径“%JAVA_HOME%\\bin;”,如图1.5(b)所示,单击“确定”按钮。
图1.4 打开“环境变量”对话框
图1.5 设置环境变量
选择任务栏“开始”→“运行”命令,输入“cmd”回车,在命令行输入“java-version”回车,如果环境变量设置成功就会出现Java的版本信息,如图1.6所示。
图1.6 JDK 8配置成功
4.JDK 8的构成
进入JDK 8的安装路径,将看到如表1.1所示JDK8的目录结构。
表1.1 JDK 8的目录结构

JDK 8包含的内容非常丰富,图1.7是其官方文档所提供的概念体系结构图,从中可一窥JDK 8的构成细节。从图上看,Java实质是一系列工具、庞大的类库及JVM集成在一起组成的复杂编程环境,但概括起来,有以下几大基本构成。
图1.7 Java Platform Standard Edition 8概念体系结构图(Copyright?1993-2015,Oracle)
(1)JVM:即Java虚拟机,它位于图1.7整个体系的底层,负责解释、执行Java程序,可以运行在各种操作系统平台上。
(2)JDK 8类库:JVM之上是Java最基础的类库,提供了各种实用类,包括最常用的java.lang、java.util、java.io、java.sql和javax.swing等。
(3)开发工具:在图1.7体系的上层是种类繁多的开发工具,这些工具随Java官方发布的JDK一起打包提供,都是可执行的程序,并公开了APIs(使用命令接口),常用的工具有javac.exe(编译工具)、java.exe(运行工具)、javadoc.exe(用于生成Javadoc文档)和jar.exe(打包工具)等。
1.2.2 Eclipse集成开发环境
事实上,仅用记事本及JDK自带的工具(javac.exe、java.exe等)就足以编写Java程序和进行Java软件开发,但为提高效率,通常不这么做,而是借助于现成的、功能更为强大的集成开发环境(IDE)。目前比较主流的IDE有Eclipse、MyEclipse和NetBeans等,本书选用免费开源的Eclipse作为Java语言的开发环境。
1.安装Eclipse 4.4
可从Eclipse官网下载:http://www.eclipse.org/downloads/,当前最新的发布版本是Eclipse 4.4.2,下载后直接解压即可使用。解压后,在磁盘上生成一个eclipse文件夹,进入双击eclipse.exe,出现如图1.8所示的欢迎界面。
图1.8 Eclipse欢迎界面
为使用方便,右击eclipse.exe,选择“发送到”→“桌面快捷方式”命令,在桌面上将出现Eclipse的快捷方式,以后直接双击快捷方式即可启动Eclipse。
2.第一个Java程序
现在就用Eclipse来编写第一个Java程序,借此熟悉它的使用。Eclipse以“项目(Project)”的形式管理Java程序,开发一个基本的Java项目包括三个步骤。
(1)创建Java项目
启动Eclipse,在其工作台窗口中依次选择主菜单“File”→“New”→“Java Project”项,打开“New Java Project”向导,如图1.9所示,在“Project name”栏输入项目名“MyProject_01”,其他选项默认,单击“Finish”按钮,项目创建成功。项目“MyProject_01”将出现在左边的“Package Explorer”(包资源管理器)中。
(2)创建Java包
在“包资源管理器”中右击新创建的项目“MyProject_01”,选择菜单“New”→“Package”项,弹出“New Java Package”对话框,如图1.10所示,在“Name”栏输入包名“org.circle”,单击“Finish”按钮完成包的创建。
图1.9 创建Java项目
(3)创建Java类
右击“MyProject_01”项目树src目录下新建的包“org.circle”,选择菜单“New”→“Class”项,弹出“New Java Class”对话框,如图1.11所示,在“Name”栏输入类名“Area”,单击“Finish”按钮完成类的创建。
图1.10 创建Java包
图1.11 创建Java类
系统自动在中央工作区打开Area类的代码编辑窗口,这时就可以编写Java程序了。输入“Area.java”源程序,如图1.12所示,完成后单击工具栏“Save”()按钮保存。
图1.12 编写Java代码
右击“Area.java”,选择菜单“Run As”→“Java Application”项,运行Java程序,在下方控制台区显示输出结果:
3.程序分析
下面来看这个Java小程序的代码,简要分析一下,使大家对Java编程有一个初步的认识。
【例1.1】求圆面积。
源程序文件名为Area.java,代码如下。
Area.java
下面对程序进行简要说明。
(1)“/**”到“*/”之间的内容为注释,一般用于描述程序功能,声明版本、版权信息等。
(2)保留字class声明了一个类,其类名为Area,保留字public表示它是一个公共类。类定义由花括号{}括起来。用户编写的Java源代码文件通常被称为编译单元,每个编译单元的后缀名必须为.java,在编译单元内可以有一个public类,该类的名称必须与文件名相同(区分大小写)。每个编译单元最多只能有一个public类(也可以没有),否则编译器不会接受。
(3)在该类中定义了一个main()方法,其中public表示访问权限,指明所有的类都可以使用该方法;static指明该方法是一个类方法,它可以通过类名直接调用;void则指明main()方法不返回任何值。对于一个应用程序来说,main()方法是必需的,而且必须按照如上格式来定义。Java解释器在没有生成任何实例的情况下,以main()方法作为入口来执行程序。一个Java程序中可以定义多个类,每个类中也可定义多个方法,但最多只能有一个公共类,且main()方法也只能有一个。
(4)语句“final double PI=3.1416;”表示定义实型常量PI的值为3.1416。
4.程序调试
编写完的Java程序难免会隐含着各种错误,程序员必须学会调试程序,才能有效地查出并排除代码中的错误。这里以【例1.1】程序为例,简单介绍一下如何用Eclipse调试Java程序。
(1)设置断点
在源代码语句左侧的隔条上双击鼠标左键,可以在当前行设置断点,这里将断点设在第14行,如图1.13所示。
图1.13 设置断点
第14行语句是给圆的半径赋值:
(2)进入调试透视图
右击“Area.java”,选择菜单“Debug As”→“Java Application”项,运行Java程序,弹出对话框单击“Yes”,系统会自动切换到调试透视图界面,如图1.14所示。
图1.14 调试透视图
调试透视图由Debug视图、Variables视图等众多个子视图组成,在界面左下方编辑器中以绿色高亮显示当前执行到的代码位置,即断点所在的第14行。
(3)变量查看
右上方Variables视图显示了此刻程序中各个变量和常量的取值,从图1.14可见,此时常量PI已经有了值,是因为在这之前(第12行)执行了语句:
Variables视图显示PI的值也为3.1416,说明赋值正确,但由于此时尚未给圆半径r赋值和计算圆面积,故还看不到r、area这两个变量的值。
(4)变量跟踪
单击工具栏“Step Over”()按钮,执行当前(第14行)语句给圆半径赋值,如图1.15所示,Variables视图中就显示出变量r的值。
再次单击“Step Over”按钮,可看到变量area的值……继续单击“Step Over”按钮,每单击一下,程序就往下执行一步,在Variables视图中能清楚地看到各变量值的改变。调试程序时,读者可以依此单步执行下去,看看程序执行的每一步各变量都有哪些改变,是否如期望的那样去改变。若在某一步,变量并没有像预料的那样获得期望值,就说明在这一步程序出错了,如此就很方便地定位到了错误之处。
图1.15 执行当前语句
第2章 Java语法基础
程序由语句组成,语句经常使用数据类型、运算符、表达式等。Java语言的数据类型、运算符与表达式等是从C++语言简化而来,更加简洁、高效。
2.1 常量和变量
Java程序运行时,值不可修改的数据称为常量,分为字面常量(常数)与标识符常量两种。变量是程序运行时值发生改变的量。
2.1.1 数据类型
Java是一种强类型语言,这意味着所有变量都必须先明确定义其数据类型才能使用。Java语言的数据类型有两类:基本数据类型与引用类型。基本数据类型包括:boolean(布尔型)、byte(字节型)、short(短整型)、int(整型)、long(长整型)、char(字符型)、float(单精度浮点型)和double(双精度浮点型)共8种。其余为引用类型,例如数组、字符串、类、接口、用户自定义类型等。所有基本数据类型的大小(所占用的字节数)都有明确规定,在各种不同平台上保持一致,这点有助于提高Java程序的可移植性。各基本数据类型的大小及取值范围,如表2.1所示。
表2.1 基本数据类型的大小及取值范围

2.1.2 标识符和关键字
标识符是指程序中包、类、接口、变量或方法名字的字符序列。Java语言要求标识符必须符合以下命名规则。
● 标识符由数字(0~9)、大写字母(A~Z)、小写字母(a~z)、下画线“_”以及美元符号“$”等组成,并且长度不受限制。
● 标识符的首字符必须是字母、下画线“_”或美元符号“$”。
● 不能把关键字和保留字作为标识符。
● 标识符是大小写敏感的,例如,hello与Hello是两个不同的标识符。
表2.2是一个标识符正误对照表,列举了一些合法的标识符和非法的标识符。
表2.2 标识符正误对照表

在命名Java标识符时,应做到“见名知意”。Java中一些被赋予特定含义、用作专门用途的字符序列称为关键字,包括:
● 数据类型:boolean、byte、short、int、long、char、float、double。
● 包引入和声明:import、package。
● 类和接口声明:class、extends、implements、interface。
● 流程控制:if、else、switch、do、while、case、break、continue、return、default、while、for。
● 异常处理:try、catch、finally、throw、throws。
● 修饰符:abstract、final、native、private、protected、public、static、synchronized、transient、volatile。
● 其他:new、instanceof、this、super、void、assert、const*、enum、goto*、strictfp。
注意:
打上“*”的关键字,Java没有使用。
2.1.3 常量
Java程序运行时值不可修改的量称为常量,分为字面量(常数)与标识符常量两种。字面量即Java源程序中表示的常数值,如12.6、123、0x12、false、\"hello\"等,表示一个个具体的值,它是有类型的,有如下5种。
1.布尔型常量(boolean)
布尔型常量值只有true或false,它们也可看成是Java语言的关键字,不能挪作他用且必须小写。true表示“逻辑真”,false表示“逻辑假”。
注意:
不能认为“非零值或1”是true、“零值”是false。
2.整型常量(int或long)
整型常量有十进制、八进制、十六进制三种表示法。
(1)十进制:十进制整数,如123、-48等。
(2)八进制:以数字0开头的八进制整数,如017、-021等。
(3)十六进制:以0x或0X开头的十六进制整数,如0x12a6、0XAB12、-0x1a0等。
整型常量(int)在机器中占32位(4个字节),故最大的整型常量是2147483647(该值由Integer.MAX_VALUE表示);最小的整型常量是-2147483648(由Integer.MIN_VALUE表示)。若程序中出现一个整型常量其值超出上述范围,就会产生一个编译错误。为避免该错误,要在该值后加上L或l,使它成为一个long型常量。最大的长整型常量值由Long.MAX_VALUE表示,最小的长整型常量值由Long.MIN_VALUE表示。若要表示long型常量值
....
本站仅展示书籍部分内容
如有任何咨询
请加微信10090337咨询