Java程序设计教程(工业和信息化普通高等教育“十二五”规划教材)(txt+pdf+epub+mobi电子书下载)

作者:段新娥,贾宗维(主编)

出版社:人民邮电出版社

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

Java程序设计教程(工业和信息化普通高等教育“十二五”规划教材)

Java程序设计教程(工业和信息化普通高等教育“十二五”规划教材)试读:

前言

Java是目前全球最时髦的软件开发工具之一,在互联网、企业信息化、嵌入式设备和电子产品等领域具有广泛的应用。随着 Java 应用的扩展,Java 技术人员供给大幅增加,但是软件外包的兴起、软件产业的发展和手机软件开发应用的增加,促使 Java 技术人才的需求增长更加迅猛,远远超过其供给的增长。目前,无论是高校的计算机专业,还是IT培训学校,都将Java作为一门核心教学课程。这对于培养学生计算机应用能力具有非常重要的意义。编者结合多年来的 Java 教学经验和开发体会,针对学生学习 Java 程序设计的特点,在参考了国内外同类优秀教材后,编写了本书。

本书具有如下特点。(1)内容精练、重点突出。Java 是一个复杂的知识体系,其包含内容很多,为适应市场需求,且在有限的时间内将基础的、关键的知识介绍给读者,编者在内容组织上做了精心的选择和组织,力求使知识讲解全面、系统,使全书重点突出、强调实用。全书每章都由知识讲解、例题分析、综合实例、本章小结、课后习题5部分构成,这样本书不仅有理论介绍,还有相应的练习,为进一步理解掌握抽象知识提供了保障。(2)实例丰富、举一反三。Java 程序设计课程一直被学生认为是比较难学的一门专业基础课,针对这一现象,在本书编写过程中,编者从不同角度设计了大量实例,将抽象的 Java 概念、技术尽量同比较直观的、与生活实际密切联系的实例结合起来,针对每个知识点,设计对应的生动小示例,每章最后设计一个综合实例,全书贯穿一个典型案例。通过将实例融入知识讲解中,使知识与实例相辅相成,让学生对所学知识先形成比较深刻的感性认识,再带着好奇去探究其原理及应用,最终达到既有利于学生学习知识,又有利于指导实践的目的。(3)由浅入深、言简意赅。本书体系结构力求由浅入深,循序渐进,理论与实践相结合,书中理论讲解通俗易懂、言简意赅;例题设计的宗旨是加深对概念、编程思想、编程方法的理解和说明,追求简单、典型、完整的目标。

全书共分11章。第1章介绍了Java运行环境的建立与Java程序的两种基本类型;第2章介绍了Java编程基础语法;第3章详细讲解了类的抽象、封装;第4章详细讲解了类的继承、多态、访问控制、非访问控制、包和接口;第5章详细介绍了Java的图形与用户界面中Java SE中Swing组件、AWT组件事件处理模型、布局管理器等;第6章详细介绍了 Java 通过 JDBC 连接、访问数据库的过程;第7章介绍了Java的异常处理机制;第8章介绍了多线程;第9章介绍了Java中输入输出流的使用及文件的操作;第10章介绍了网络编程;第11章通过案例介绍了Java与 Java Web的关系,以此说明 Java的应用方法和过程。

本书的编者具有多年从事Java教学和开发的经验,熟悉Java教学重点、难点,了解学生在学习中常遇到的困难和解决方法,所以本书具有较强的适用性。

本书由段新娥、贾宗维任主编,负责整体结构的设计和全书的统稿、定稿,李荣、邓静、庞敏、王晓芳任副主编。第1章、第4章、第6章由段新娥编写,第2章由李荣编写,第3章由邓静编写,第5章、第10章由贾宗维编写,第7章、第11章由庞敏编写,第8章、第9章由王晓芳编写。

由于时间紧迫以及编者水平有限,书中难免出现疏漏和不足,恳请读者批评、指正,使本书得以改进和完善。编者2013年9月|第1章||绪论|在软件开发过程中,程序设计是必经的一步。程序设计语言是程序员编制程序完成某一任务的必备工具之一。自计算机问世以来,出现过很多编程语言,Java属于面向对象的高级程序设计语言范畴,是最具有代表性的编程语言之一。本章简要介绍Java的发展、特点、工作原理,以及运行环境的配置,并以一个简单的程序为例,介绍Java程序执行的过程与关键步骤。本章重点是:Java运行环境的搭建与Java程序的基本输入、输出。1.1 Java概述

Java 是一门由Sun公司开发的编程语言。使用它可在各种不同机器、各种操作平台的网络环境中开发软件。不论你使用的是哪一种 WWW 浏览器、哪一种计算机、哪一种操作系统,只要WWW 浏览器上面注明了“支持 Java”,你就可以看到生动的主页。Java 正在逐步成为 Internet应用的主要开发语言。它彻底改变了应用软件的开发模式,带来了自 PC 机以来的又一次技术革命,为迅速发展的信息世界增添了新的活力。1.1.1 Java语言的发展图1-1 Java之父James Gosling

Java的前身是一种与平台无关的语言——oak,oak诞生于1991年Sun公司的一个研究项目。该项目由James Goslingt(见图1-1)和Patrick Naughton领导的Green研究小组承担,为诸如烤面包机、电冰箱、机顶盒这样的消费类电子设备设计一个通用环境,目的是为了开发一种独立于平台的控制软件,以便和它们进行信息交流。刚开始,项目小组准备采用C++,但C++太复杂,且安全性差,最后决定基于C++开发一种新的语言——oak(Java 的前身)。该语言采用了许多 C 语言的语法,提高了安全性,并且是面向对象的语言,但项目的结果并不成功。同样oak语言在商业上并未获得成功,甚至差点夭折。之后随着Internet的起步,改变了oak的命运。Internet出现后,Sun公司发现,原来的oak语言所具有的跨平台性、面向对象、安全性高等特点,非常符合互联网的需要。于是,进一步改进该语言的设计后,设计人员最终将这种语言取名为Java,并配上一杯冒着热气的咖啡作为它的标志(Java是印度尼西亚爪哇岛的英文名称,因盛产咖啡而闻名)。1995年5月23日, Sun公司在SunWorld’95上正式发布Java和HotJava浏览器,标志着Java语言的诞生,至此,一种全新的语言诞生了。Java是有史以来第一种用于编写Web程序的高级编程语言,同时又是一种通用的程序设计语言,还是完全面向对象的编程语言。之后 Java 得到了迅速的发展,目前 Java的应用范围除了基于Internet的Web开发领域之外,它还具备一般程序设计的几乎所有功能,甚至更强。1.1.2 Java与C++的比较

Java和C++都是面向对象的语言。也就是说,它们都采用面向对象的思想(封装、继承、多态)。由于C++为了兼顾大量的C语言使用者,所以兼容了C,使得自身仅仅成为了带有类的C语言,多多少少影响了其面向对象的彻底性;Java则是完全的面向对象的语言,它句法更清晰,规模更小,更易学。它在对多种程序设计语言进行深入细致研究的基础上,摒弃了其他语言的不足之处,从根本上解决了C++的固有缺陷。Java语言是从C++发展而来的,所以C++与Java之间存在许多联系但又有很大的区别。(1)C++和Java在语法上非常相似。(2)C++和Java最大的不同是Java不再支持指针。指针使C++语言成为功能最强大的一种编程语言,但同时在使用不正确的情况下指针也是C++中最危险的部分。(3)Java 被编译成虚拟机字节码,需要由虚拟机运行;C++则被编译成本地机器码。这点使C++运行更快。(4)Java对基本数据类型有规定的字节大小;C++中类型的字节大小取决于C++(和C)的实现。Java中所有对象都是按引用传递的;C++中则默认是按值传递的。(5)C++是C的超集,保留了许多C功能,如内存管理、指针和预处理,这是为了和C保持完全兼容。Java去除了这些功能,它用垃圾收集代替了程序员释放内存,还放弃了运算符重载和多重继承等C++的功能,但它可以利用接口实现有限制的多重继承。(6)Java关注的是安全性、可移植性和快速开发;C++则更多关注性能以及与C向下兼容。1.1.3 Java工作原理

Java程序的运行必须经过编写、编译、运行3个步骤。

编写是指编写源代码,在Java开发环境中输入程序代码,最终形成后缀名为.java的Java源文件。

编译是指Java编译器对源文件进行错误排查的过程,编译后将生成后缀名为.class的字节码文件,这不像C语言那样最终生成可执行文件。Java字节码文件是一种和任何具体机器环境及操作系统环境无关的中间代码,它是一种二进制文件,是将源文件用Java编译器编译后生成的目标代码文件。编程人员和计算机都无法直接读懂字节码文件,它必须由专用的Java解释器来解释执行,因此Java是一种在编译基础上进行解释运行的语言。

运行是指使用 Java 解释器将字节码文件翻译成机器代码、执行并显示结果。这一过程如图1-2所示。

Java解释器负责将字节码文件翻译成具体硬件环境和操作系统平台下的机器代码,以便执行。因此 Java 程序不能直接运行在现有的操作系统平台上,它必须运行在被称为 Java 虚拟机的软件平台之上。

Java虚拟机(Java Virtual Machine,JVM)是运行Java程序的软件环境,Java解释器就是Java虚拟机的一部分。Java虚拟机可以理解成一个以字节码为机器指令的CPU。在任何操作系统中,只要 JVM 存在,Java 程序都可以运行,真正实现了程序的可移植性。不同平台解释执行同样的Java字节码,实现了“一次编译,处处运行”。图1-2 Java程序执行过程

在运行Java程序时,首先会启动JVM,然后由它来负责解释执行Java的字节码,并且Java字节码只能运行于JVM之上。这样利用JVM就可以把Java字节码程序和具体的硬件平台以及操作系统环境分隔开来,只要在不同的计算机上安装了针对特定具体平台的JVM,Java程序就可以运行,而不用考虑当前具体的硬件平台及操作系统环境,也不用考虑字节码文件是在何种平台上生成的。JVM把这种不同软硬件平台的具体差别隐藏起来,从而实现了真正的二进制代码级的跨平台移植。JVM是Java平台无关的基础,Java的跨平台特性正是通过在JVM中运行Java程序实现的。1.1.4 Java语言的特征

Java可以说是当下最流行的开发语言。它能脱颖而出,成为编程语言中的佼佼者,是因为Java有着自身独有的特点。Java是定位于网络计算的计算机语言,它的几乎所有特点都是围绕着这一中心展开并为之服务的,这些特点使得Java语言特别适合于用来开发网络上的应用程序;另外,作为一种面世较晚的语言,它也体现和利用了若干当代软件技术的新成果,下面是Java的几大特色总结。

1.跨平台

Java将它的源程序编译成字节码文件,这种文件在有Java运行环境的所有机器上都能执行。这使得Java应用程序可以在配备了Java解释器和运行环境的任何计算机系统上运行,Java虚拟机正是由 Java 解释器和运行平台构成的,所以只要配有 Java 虚拟机的平台,不论其操作系统是哪种都能运行Java程序。Java语言这种一次编写、到处运行的方式,有效地解决了目前大多数高级程序设计语言需要针对不同系统来编译产生不同机器代码的问题,即硬件环境和操作平台的异构问题,大大降低了程序开发、维护和管理的开销。需要注意的是,Java 程序通过 JVM 可以达到跨平台特性,但JVM是不跨平台的。也就是说,不同操作系统之上的JVM是不同的,Windows平台之上的JVM不能用在Linux上面,反之亦然。

2.面向对象

面向对象技术的核心是以更接近于人的思维方式建立计算机逻辑模型,它利用类和对象的机制将数据与其上的操作封装在一起,并通过统一的接口与外界交互,使反映现实世界实体的各个类在程序中能够独立、自治、继承;这种方法非常有利于提高程序的可维护性和重用性,大大提高了开发效率和程序的可管理性,使得面向过程语言难以操纵的大规模软件可以很方便地创建、使用和维护。与C++不同,Java对面向对象的要求十分严格,是一种纯粹的面向对象程序设计语言。Java以类和对象为基础,任何变量和方法都只能包含于某个类的内部,使得Java程序结构更为清晰,并为集成和代码重用带来了便利。

3.简单易学

Java语言的语法和C++语言很接近,但比C++的相对简单得多,这使得大多数程序员更容易学习和使用Java。另一方面,它丢弃了C++很少使用的、难以理解的那些特征,使得其更简单、更精练。在语法规则方面,Java语言放弃了结构、联合、宏定义等;在面向对象方面放弃了如操作符重载、多继承、自动强制类型转换等。特别地,Java语言不使用指针,并提供了自动的垃圾回收机制,使得程序员不必为内存管理而担忧。

4.安全

较高的安全可靠性是对网络上应用程序的一个需求。为了防止用户系统受到通过网络下载的不安全程序的破坏,Java提供了一个自定义的可以在其内运行Java程序的“沙盒”。Java的安全模型使得Java成为适合于网络环境的技术。Java的安全性允许用户从Internet或Intranet上引入或运行Applet,Applet的行动被限制于它的“沙盒”内,Applet可以在“沙盒”里做任何事情,但不能读或修改沙盒外的任何数据,沙盒可以禁止不安全程序的很多活动。另外Java程序没有指针,保证了Java程序运行的可靠性。大家知道:指针是C和C++中最灵活、也最容易产生错误的数据类型。由指针所进行的内存地址操作常会造成不可预知的后果,从而破坏其安全性,造成系统的崩溃,而Java对指针进行完全的控制,为程序的可靠运行提供了保障。

5.多线程

多线程是当今软件技术的又一重要成果,已成功应用在操作系统、应用开发等多个领域。多线程技术允许同一个程序中可以同时执行多个小任务,即同时做多个事情。比如,它可以在一个线程中完成某一耗时的计算,而利用其他线程与用户进行交互对话。所以用户不必停止工作专门等待Java程序完成耗时的计算。Java不仅内置多线程功能,而且提供语言级的多线程支持,即Java定义了一些用于建立、管理多线程的类和方法,使得开发具有多线程功能的程序变得简单、容易、有效。多线程带来的更大好处是能提供更好的交互性能和实时控制性能。

6.小巧

Java 能使软件在很小的机器上运行,基础解释和类库的支持大小约为 40KB,增加基本的标准库和线程支持的内存需要增加125KB。由于Java的设计是要在小的计算机上运行,作为一种编程语言来说其系统是相对较小的,它能有效地在4MB以上RAM的PC上运行。Java翻译器只占用几百KB,这种翻译器对Java的平台无关性和可移植性是可靠的。1.2 Java运行环境的建立

要编写一个Java应用程序,必须先安装开发环境。Java开发环境包括一个编辑软件和开发Java程序必需的工具包——JDK,编辑软件可以使用计算机上的任何一个文本编辑器,如 Notepad、Textpad等,也可以使用集成开发环境(Integrated Development Environment,IDE)。支持Java的IDE很多,目前较流行且免费的集成开发环境主要有NetBeans 、Eclipse和Myeclipse。初学阶段,建议读者在熟悉 JDK 之后再慢慢过渡到使用 IDE,JDK 是基础,当编制大型程序时,使用 IDE会更加方便快捷。

JDK——Java开发工具包(Java Development Kit)的简称,它是用于构建在Java平台上发布的应用程序、Applet 和组件的开发环境,也是一切 Java 应用程序的基础,所有的 Java 应用程序都是构建在这个JDK之上的,它包括了一个提供Java程序运行的虚拟机和一些运行支持的类库文件,以及一些工具程序,在硬件或操作系统平台上安装一个JDK,就可以开发和运行Java应用程序了。SUN公司1996年1月发布JDK1.0版本,次年发表JDK1.1版本,1998年发表JDK1.2版本,目前JDK较流行的版本是JDK1.6,最高版本是JDK1.7。具体各版本历史如表1-1所示。表1-1 JDK版本历史1.2.1 JDK的安装与配置

第一步:下载JDK

JDK 是一个开源、免费的工具。可以从 Sun 公司官方网站 http://java.sun.com/免费下载 JDK合适的版本,网址为:http://java.sun.com/javase/downloads/index.jsp。本书使用的是 Java SE Development Kit 6u11。下载后得到jdk-6u11-windows-i586.exe文件。

第二步:安装

双击下载的可执行程序,启动安装过程,安装向导会弹出如图1-3所示的窗口,提示选择安装路径和安装组件,如果没有特殊要求,保留默认设置即可。JDK的默认安装路径是在“C:\ProgramFiles\Java”目录下,创建一个根据JDK版本号命名的子目录,如“jdk1.6.0_11”。图1-3 安装JDK

也可以单击“更改”按钮更换安装路径,这个JDK软件包的安装目录通常称为JDK开发包安装的根路径,对应于后面提到的JAVA_HOME系统变量值。单击“下一步”按钮,之后按照安装向导进行即可。

JDK开发工具包中含有编写和运行Java程序的所有工具,安装后会在“C:\Program Files\Java”目录下创建名为“jdk1.6.0_11”和“jre6”的两个目录,jdk1.6.0_11目录下包含了运行java程序所需的编辑工具、运行工具以及类库;而jre6目录下仅包含了一个运行时的环境,无法完成对Java程序进行编译等任务。jdk1.6.0_11目录下的目录结构如图1-4所示,各子目录的作用如下。图1-4 jdk1.6.0_11目录下的目录结构

Bin 目录:包含编译器(javac.exe)、解释器(java.exe)和一些工具(如帮助文档生成器javadoc.exe、打包工具jar.exe、小应用程序浏览工具appletviewer.exe等)

Lib目录:包含开发过程中使用的类库文件,这些文件通常以.jar为扩展名。如tools.jar支持bin目录下的开发工具(如java.exe、javac.exe)的类库;dt.jar支持运行环境和开发工具的类库,主要是swing的包;rt.jar是开发所需要的类库,也就是平时import加载进来的类库;charsets.jar字符集转换包等。

Demo目录:包含一些学习的Java程序演示实例。

Include目录:包含C语言头文件,支持Java本地接口与Java虚拟机调试程序接口的本地编程技术。

Jre目录:包含Java虚拟机、运行时的类包和Java应用启动器。

Sample目录:SUN自带的Java案例。

Src.zip:是源码压缩文件。

第三步:环境配置

由于某些Java程序依赖特定的环境变量来定位,为了保证程序运行过程中,系统能自动找到命令所在的目录,通常 JDK 安装完成后,还需要设置环境变量。可以直接在系统的批处理文件“autoexec.bat”中添加环境变量的信息,也可以使用系统中提供的属性页来设置。下面介绍在Windows XP 中配置环境变量的步骤。

在Windows系统中,右击“我的电脑”图标,从弹出的快捷菜单中选择“属性”命令,在弹出的“系统属性”对话框中选择“高级”选项卡,单击“环境变量”按钮,在出现的“环境变量”窗口中的“系统变量”列表框下分别对环境变量JAVA_HOME、PATH、CLASSPATH 3个环境变量进行设置,环境变量设置如图1-5所示。图1-5 设置环境变量

◆ 系统环境变量JAVA_HOME的设置

JAVA_HOME用于指明JDK在当前环境中的安装位置。在图1-5中打开的环境变量设置窗口中,新建一个系统变量,可以命名为JAVA_HOME,并设置值为“C:\Program Files\Java\jdk1.6.0_11”,结果如图1-6所示。图1-6 JAVA_HOME环境变量设置

◆ 系统环境变量PATH 的设置

一般情况下,这个值已经存在,只需要在现有值的最后添加 Java 各种可执行文件(例如java.exe,javac.exe 等)的搜索路径即可。在系统环境变量中找到 PATH 变量,在其后添加“;%JAVA_HOME%\bin ;%JAVA_HOME%\jre6\bin”,结果如图1-7 所示。图1-7 PATH环境变量设置

◆ 系统环境变量CLASSPATH 的设置

CLASSPATH顾名思义就是类的路径,该变量的值告诉Java去哪里查找程序中用到的第三方或者自定义的类文件。这一变量通常不存在,所以需要新建一个系统变量,命名为CLASSPATH,并设置其值为“.;%JAVA_HOME%\lib;%JAVA_HOME%\jre\lib”或者设置其值为“.;%JAVA_HOME%\lib\tools.jar;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\jre\lib\rt.jar;”。

上面变量值中不要漏掉“.”,它代表当前路径,也就是在当前路径下寻找需要的类。

第四步:检查Java环境变量设置

环境变量设置完成后,需要测试JVM是否能正常工作。打开DOS窗口,输入如下命令:

Java–version

如能正确显示本地计算机上安装的JDK的版本信息,表明JDK安装成功,且环境变量的设置也是正确的。或者在命令行中输入如下命令:

C:\>java或者C:\>javac

出现如图1-8所示的信息说明环境变量设置成功,如果提示找不到相应的命令,就说明环境变量设置不正确,需要重新设置。图1-8 检查Java环境变量设置1.2.2 Eclipse开发环境配置

Eclipse 是一个开放源代码的、基于Java的可扩展开发平台。就其本身而言,它只是一个框架和一组服务,用于通过插件构建开发环境,给用户提供统一的集成开发环境。

第一步:Eclipse下载、安装

由于 Eclipse 是免费的,读者很容易从各种网站上下载并安装它。Eclipse 主社区的网址是:http://www.eclipse.org,文件名为:Eclipse-SDK-3.2.2-WIN32.ZIP,Eclipse是一个压缩文件,安装比较简单。首先创建一个文件夹,然后将上述压缩文件解压缩到这个文件夹中即可,注意该文件夹的结构及内容不要随意改动。在 Eclipse 根目录下,有一个名为 Eclipse.exe 的可执行文件,这就是Eclipse主程序。运行它即可启动Eclipse,并进入集成开发环境的图形界面。为了方便使用,可以为Eclipse.exe文件创建一个快捷方式,并将它放到桌面或开始菜单。

Eclipse要求计算机上必须预先安装好1.4.1或更高版本的Jre(Java运行环境),否则Eclipse不能工作。

第二步:观察界面组成

双击Eclipse.exe文件,启动Eclipse,出现路径设置窗口,如图1-9所示。可用默认路径。图1-9 设置工作空间路径

Eclipse的项目都是保存在工作空间中的,所以,项目的操作(如创建、打开、保存和删除等)都是针对当前工作空间中的项目而言的。但工作空间中除了保存项目本身外,还保存了很多工作空间的描述信息及专用信息。Eclipse 的资源管理是基于文件系统的,从 Eclipse 的角度看,其资源管理机制是“工作空间→项目→有名包(无名包)→类文件”,所以Eclipse工作空间非常容易与文件系统以及其他工具和众多源代码库集成。

单击“OK”按钮,即进入Eclipse主界面,界面如图1-10所示。图1-10 Eclipse集成开发环境(主界面)

Eclipse的界面主窗口是由很多子窗口组成的,这些子窗口显示当前工作内容(项目、文件和程序等)的多种视图。Eclipse主窗口含有主菜单和工具栏,而各视图也有自己专用的工具栏,右上角都有最大化和最小化按钮。由于视图较多,每个视图的尺寸有限,有时不便于观察和操作,所以,当使用某一视图时,可单击当前视图的最大化按钮,使该视图扩展而占据整个主窗口,待操作完后再单击视图右上角的恢复按钮还原大小。

主窗口中位于中央部分的是代码编辑器视图(编写Java代码的窗口),它是编写java代码的唯一场所。编辑器视图标签上显示出当前编辑的源程序的文件名,在编辑器视图中可以同时打开几个编辑窗口,同时编辑几个源程序。代码编辑器视图左侧是包管理视图,或者说是Java的资源管理器,它采用文件夹式的层次结构组织管理Java的各种资源,包括项目、包、源程序文件,以及文件中的类、类中的属性及方法等。编辑器视图右侧是Java的大纲视图,该视图显示当前编辑窗口中的程序结构和主要元素,各程序中定义的类名以及类的属性和方法等。编辑器视图下方有Problems 视图、Console 视图等,Problems 视图是错误信息视图,用于在编辑时显示代码错误信息;Console视图是控制台视图,当Java程序运行时,用于标准输入输出和错误信息的输出,作为命令行的终端界面。Eclipse集成环境中还有一些与Java有关的透视图。如Debug透视图、Java透视图和Java Browsing透视图。可以使用“选择透视图”按钮在不同透视图之间切换。图1-9所示的透视图是Java透视图。

第三步:使用Eclipse开发Java项目

1.创建Java项目

进入Eclipse后,在包视图中会显示出当前工作空间中已有的项目,可以在已有项目下新建“包→文件”,也可以选择 File 菜单下的 New→Java Project 命令,或者单击工具栏上的“New Java Project”按钮,新建一个项目。当选择New→Java Project命令后,系统弹出如图1-11所示的对话框。图1-11 创建项目窗口

在输入项目名称(Project name)处输入项目名称,如“Bookmanager1”,在“Project layout”选项中,如果选择“Create separate…”选项,在项目文件夹中就会建立两个子文件夹(src和bin),分别存放.java 文件和.class 文件。如果采用默认项,项目中的文件都存放在项目文件夹中。其他选项都可以采用图中所示的默认选项。单击“Finish”,可以在包视图上看到,系统创建了一个新的项目“Bookmanager1”。

2.创建Java包

Java类的定义必须存在于包中。如果没有创建包,在项目中创建新的Java类时,系统就采用隐含的无名包。当创建新项目后,可以在项目中创建有名包,然后在包中创建类。在包视图中选择新的项目名“Bookmanager1”,然后单击工具栏上的“New”→“Package”按钮,弹出如图1-12所示的对话框。在Name项后输入包名“com.hbsoft.booksManageSys.bo”,单击“Finish”按钮结束包的创建,此时在包管理器视图中会看到在“bookmanager1”项目下创建了一个包“com.hbsoft.booksManageSys.bo”。图1-12 创建包窗口

3.创建类并执行Java程序

在包管理器视图中,选中包名,选择New Java Class命令,弹出如图1-13 所示的窗口。图1-13 创建类窗口

在 Name 项内填入类名,单击“Finish”按钮,完成类的定义。可以在包视图中看到,在“com.hbsoft.booksManageSys.bo”中创建了一个名为“Logonfunction.java”的类。此时就可以在代码编辑器视图中,编写Logonfunction.java的源代码,输入完成后保存即可。

在Eclipse环境中,一般采用自动编译方式,每当保存一个源程序文件时,系统都会在保存之前先对代码进行编译,如果出现编译错误,错误信息就会显示在Problems视图中。根据错误信息编写或修改完代码后,只要单击保存命令,系统即可保存并编译文件。

最后选中项目中含有 main()方法的类名,单击工具栏上的“Run”按钮右侧的小三角按钮,在弹出的下拉菜单中选择Run As|Java Application 选项,即可执行Application类型的Java程序,非常方便。

Eclipse集成开发环境应用非常广泛,对于不同的开发项目定制了不同的界面布局与个性化的功能,为开发者提供了很大的灵活性,读者可以根据实际需要进行设置。1.3 Java程序的类型

Java程序和其他高级语言程序一样,要经过编写源程序、编译源程序、运行程序等过程,但由于Java程序最终运行环境的不同,其程序结构也不同。1.3.1 Java程序的两种模式

根据程序结构组成与运行环境的不同,Java程序可以分为Java应用程序(Java Application)和Java小应用程序(Java Applet)两类。Java Application和Java Applet的编译都是由javac.exe程序来实现的,并且都能生成相应的字节码文件。Java Application是完整的,在计算机的操作系统和Java运行环境的支持下能独立运行;而Java Applet则不能独立运行,它是嵌入在HTML编写的Web页面中的程序,在由支持Java的网页浏览器或Appletviewer提供的框架内运行。另外,Java Applet不允许访问用户计算机上的文件,也就是不能对用户计算机上的文件进行读写操作;而Java Application没有这些安全性约束,在权限范围内可自由地读写用户计算机上的文件。1.3.2 Application应用程序

Java Application是完整的、能独立运行的程序,但其必须有main()方法,其运行结果一种是在DOS命令行下输出,一种是以图形用户界面形式输出。下面先编写一个最简单的Java应用程序,在DOS命令行下输出结果,说明Java应用程序的开发步骤。【例1-1】 在DOS命令行下输出“Hello,Java World!”。

1.编写源程序

Java源程序是以.java为后缀的简单的文本文件,可以用文本编辑工具(如记事本)来编写,也可以用各种Java集成开发环境中的源代码编辑器来编写。在文本编辑工具中输入以下代码。

(1) /**

(2) 一个在命令行输出的java应用程序

(3) */

(4) package chap1

(5) import java.io.*

(6) public class HelloWorld{

(7) Public static void main(String args[])

(8)  {

(9)  System.out.println("Hello,Java World!")//向控制台输出

(10)  }

(11) }

程序共11行,第1行~第3行是注释行,/**…*/是Java程序中特有的文档注释格式。

第4 行,package 语句是打包语句,是程序的第一条语句,它是可选的。一个源程序最多只能有一个打包语句,它指明编译后的字节码文件(.class)存放的位置。

第5行,import语句是导入语句,用于导入该程序中所需的其他类,一个源程序中可以有多个导入语句,但必须放在package语句之后、class语句之前。

第6行~第11行,是类的定义。Java程序都是以类为方式组织的,class关键字用于定义类,每个类都有类名,花括号括起的部分为类体。类体是由类的成员属性和多个成员方法组成的。每个方法代表一个独立的功能单元。

本例第6行是声明一个名为HelloWorld的类。其中public表示该类是公有的,可被其他的类所访问,且这种类的源文件必须和类名同名;class表示HelloWorld是一个Java的类;HelloWorld是用户自定义的类名。

第7行,定义名为main的方法,main()方法是一个特殊的方法,它是程序执行的入口。main()方法说明的格式是固定的,即 public static void main(String args[]),其中元素缺一不可。一个Application只有一个类包含main()方法,它是程序的主类。其中public说明该方法可以被其他任何程序访问(前提是所在类本身可以被访问);static表示main()方法是一个可以直接使用的方法。void表明main()方法返回不确定的类型,执行后,不返回给调用者任何信息。String args[]是一个String类型数组的声明,用来接收外界传递给main()方法的参数。

第9行,是一个输出语句,用于在标准输出设备(屏幕)上输出“Hello,Java World!”。“//”后为行注释语句。

第10行,main()方法体的结束括号,它和第8行的大括号构成一个整体。

第11行,HelloWorld类体的结束括号和第6行最后的大括号构成一个整体。

在记事本或集成开发环境中输入以上源程序代码,将其命名为HelloWorld.java,并保存在指定路径下,设本例保存在D:\javaexam\chap1目录下。

2.编译源程序

Java源程序并不能直接执行,必须被编译为对应的字节码文件后才可以执行。编译源文件使用JDK开发包提供的编译器(JDK开发包下的bin文件夹下一个名为javac.exe的可执行文件)进行编译,使用该编译器首先要选择“开始”菜单下的“运行”命令,在“运行”对话框的“打开”下拉列表中输入“cmd”,再单击“确定”按钮,进入windows的命令行提示符环境下,切换到java源程序所在的路径,操作方法如图1-14所示。图1-14 切换路径

输入编译命令:javac HelloWorld.java,如果出现图1-15 所示的界面表示编译成功。图1-15 Java源文件编译成功(1)编译时,源文件名后的文件类型后缀.java不能丢弃。(2)源文件中有几个类,将生成几个字节码文件。

3.运行字节码文件

运行字节码文件需要使用Java程序解释器(即bin文件夹下一个名为java.exe的可执行文件),在命令行输入:java HelloWorld,运行出现图 1-16 所示的界面,说明运行成功,否则必须回到HelloWorld.java文件处进行修改直到正确为止。图1-16 Java程序运行结果图

如果用 Eclipse 集成开发环境编写源程序,单击“保存”按钮,Eclipse 会自动对源文件进行编译,不用再编译。单击工具栏上的Run按钮,直接运行即可。【例1-2】 Java应用程序以图形用户界面形式输出。

package chap1;

import javax.swing.*;

import javax.swing.JFrame;

public class TestGraphic {

public static void main(String[] args) {

JFrame jf=new JFrame();

JButton jb1=new JButton("欢迎使用图书管理系统,请单击!");

JLabel back=new JLabel(new ImageIcon("lab.jpg"));

jf.setTitle("图书管理系统");

jf.setSize(300, 300);

jf.add(back,"Center");

jf.add(jb1,"South");

jf.setLocation(100, 200);

jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

jf.setVisible(true);

}

}

程序运行结果如图1-17所示。图1-17 例1-2运行结果

这是Java Application以图形用户界面形式实现的“图书管理系统”主界面。在程序中首先使用package语句将这个文件存在包chap1中,另外,由于程序中还用到了Java系统提供的实现图形用户界面所需的swing包中的JFrame类、JBotton类、JLabel类,所以程序开头部分应用了import语句,将这些类所在的包加载进来。在 main()方法中,分别创建 JFrame 类、JBotton 类、JLabel类的对象jf、jb、back,再调用相关方法(这些方法将在第5章中详细介绍),完成了“图书管理系统”主窗口的设计。1.3.3 Applet小应用程序

Java Applet是另一类非常重要的Java程序,它的源代码编辑和字节码的编译生成过程与Java Application相同,但它却是一类不能独立运行的程序,它的字节码文件必须嵌入到HTML的文件中,并由负责解释 HTML 文件的 WWW 浏览器内嵌的虚拟机来解释执行。下面是一个简单的Applet程序。【例1-3】 在窗口上显示“Hello, java Applet world!”。

1.编写源文件

与Java Application相同,Applet源程序也是以.java为后缀的简单的文本文件,可以用文本编辑工具(如记事本)来编写,也可以用各种Java集成开发环境中的源代码编辑器来编写。在文本编辑工具中输入以下代码。

import java.awt.Graphics;

import java.applet.Applet;

public class MyJavaApplet extends Applet

{

public void paint(Graphics g)

{ g.drawString("Hello, Java Applet World!", 10 , 20);

}//end of paint method

}//end of class

程序共8行,第1行、第2行是import导入语句,用于导入该程序中所需的Graphics、Applet类。Applet 程序必须有且仅只有一个类是 Applet 的子类,它是程序的主类,所以需使用 import java.applet.Applet命令加载Applet类;另外,程序中需要使用Graphics对象在界面上绘图,所以加载java.awt.Graphics。

第3行,定义Applet的子类MyJavaApplet,它是Applet程序的主类。extends说明MyJavaApplet是Applet的子类。Applet程序中不需要有main()方法。

第5 行,paint()方法用于绘制界面。当所显示的内容需要重画时,该方法被浏览器自动调用并执行。

第6行,在paint()方法中Graphics对象g调用自身方法drawString()将字符串输出到指定的位置。

第7行、第8行分别是方法和类的结束标志。

2.代码嵌入

编译Java Applet的方法和步骤与Java Application 相同,不再重复。

前面说过 Java Applet 不能独立运行,必须将字节码文件嵌入在 HTML 文件中,由浏览器内嵌的虚拟机解释运行。将下面代码在文本编辑工具中输入,并保存成AppletInclude.html文件。完成将Applet字节码文件嵌入到HTML文件中。

其中语句是实现代码嵌入的语句,标记中包含有3个参数。

CODE:用来指明嵌入HTML文件中的Java Applet字节码文件的文件名。此处的文件名可以是含绝对路径的.class文件的文件名,可以是不含路径的.class文件的文件名。如果不含路径,.class文件必须与.html文件在同一目录下。

HEIGHT:指明Java Applet程序在HTML文件所对应的Web 页面中占用区域的高度。

WIDTH:指明Java Applet程序在HTML文件所对应的Web 页面中占用区域的宽度。

可以看出,所谓把 Java Applet 字节码嵌入到 HTML 文件,实际上只是把字节码文件的文件名嵌入HTML文件,而真正的字节码文件本身则通常独立地保存在与HTML文件相同的路径中,由WWW浏览器根据HTML文件中嵌入的名字自动去查找和执行这个字节码文件。

3.Applet的运行

打开 IE 浏览器,在地址栏中输入 D:\javaexam\chap1\AppletInclude.html ,或双击AppletInclude.html文件,结果如图1-18所示,则说明运行成功。图1-18 Applet运行结果图

Applet的运行过程如图1-19所示。图1-19 Applet的运行过程

从这个过程可以看出,Applet的字节码程序最先是保存在Web服务器上的,当WWW浏览器下载此HTML文件并显示时,它会自动从Web服务器上下载此HTML中指定的Java Applet字节码,然后调用内置在浏览器中的Java解释器来解释执行下载到本机的字节码程序。也就是说, Java Applet字节码的运行是在本地机上完成的。当Applet程序需要修改或维护时,只要改动服务器上的程序即可,而不必修改每一台将要运行此程序的计算机。

另外, JDK 软件包中还提供了一个模拟 WWW 浏览器运行 Applet 的应用程序AppletViewer.exe,使用它调试程序就不必反复调用庞大的浏览器了,而直接在 DOS 模式下执行AppletViewer 命令,查看包含 Applet 的 HTML 文件。例如运行例1-2 中的 Java Applet,可以在DOS模式下使用如下的命令。

AppletViewer AppletInclude.html

运行结果如图1-20所示。图1-20 AppletViewer运行Applet程序的结果1.3.4 Application与Applet比较

Java源文件是由一个或多个类组成的,一个源文件有且只能有一个类被public所修饰,这个类是源文件的主类,它的类名与源文件的文件名必须相同,其中含有定义程序入口的主方法,其他类不能再用 public 修饰。源程序被编辑完成后,所有类都被编辑成.class 文件,与主类的.class文件存放在同一路径下。源文件中定义了几个类,编辑后就生成几个.class文件。这是Application与Applet的相同之处,它们的不同之处主要体现在以下方面。

1.程序结构不同

每个 Java Application 程序必定含有一个并且只有一个 main()方法,程序执行时,首先寻找main()方法,并以此为入口点开始运行。含有main()方法的那个类常被称为主类。main()方法入口是一个数组类型的参数,也可以通过命令行在运行时给main()方法传递参数。如:

public class testargs{

public static void main(String args[]){

System.out.println("书名:"+args[0]);

System.out.println("出版社:"+args[1]);

}

}

运行时输入“java testargs 红楼梦 人民邮电出版社”命令,运行结果如图1-21 所示。图1-21 命令行传递参数

而 Java Applet 程序则没有含 main()方法的主类,在 Java Applet 程序中有一个从java.applet.Applet派生的public类,这个类是Java Applet程序的主类。

2.运行工具不同

Java Application 程序被编译以后,用普通的 Java 解释器就可以使其边解释边执行;而 Java Applet程序的解释器不是独立的,而是嵌入在浏览器中作为浏览器软件的一部分,所以Java Applet程序必须通过网络浏览器或者Applet浏览查看工具才能执行。

3.运行方式不同

Java Application是完整的程序,只要有支持Java的虚拟机,它就可以独立运行而不需要其他文件的支持;而 Java Applet 程序不能独立运行,它必须依附于一个用 HTML 语言编写的网页并嵌入其中,通过与Java兼容的浏览器来控制执行。1.4 Java应用

Java技术有着各种各样丰富的应用,每种技术都体现为一种实现或实用的规范。Java语言在应用领域占有较大优势,具体体现在以下几个方面。(1)开发桌面应用程序,如银行软件、图书管理系统等软件。(2)开发面向 Internet 的 Web 应用程序,如门户网站(工商银行)、网上商城、电子商务网站等。(3)提供各行业的数据移动、数据安全等方面的解决方案,如:金融、电信、电力等。

Java发展到今天按其实用来分可分为三个版本,分别是Java SE、Java EE、Java ME。Java各版本的应用范围如图1-22所示。图1-22 Java版本的应用范围1.4.1 Java SE

Java技术的迅速普及,开发人员强烈要求某些东西更简单些,为满足这一需要,Sun公司创建了3种版本的Java平台,供开发人员使用。3个平台主要对应于不同的计算环境,每个平台由对应的JVM(Java虚拟机)和Java Application Programming Interface(API)组成,彼此之间的差别主要是JVM支持的能力和API的内容。Sun公司1998年发表JDK1.2版本,使用新的名称——Java 2 Platform,即Java 2平台。修改后的JDK称为Java 2 Platform Software Developing Kit,即J2SDK,并分为标准版J2SE(Standard Edition)、企业版J2EE(Enterprise Edition)和微型版J2ME (Micro Edition)。2005年6月,JavaOne大会召开,Sun公司公开Java SE 6并对各种版本更名, J2SE更名为Java SE,J2EE更名为Java EE,J2ME 更名为Java ME。

Java SE(Java Platform,Standard Edition)标准版是各种应用平台的基础,主要应用于开发和部署在桌面、服务器、嵌入式环境和实时环境中使用的 Java 应用程序。Java SE也包含了支持 Java Web 服务开发的类库,并为Java EE提供基础。目前已正式发布了1.7版本,但大多数开发人员都使用1.6版本,本书实例也是在1.6版本平台上调试的。1.4.2 Java EE

Java EE(Java Platform,Enterprise Edition)。企业版本帮助开发和部署可移植、健壮、可伸缩且安全的服务器端 Java 应用程序。Java EE 是在 Java SE 的基础上构建的,它提供 Web 服务、组件模型、管理和通信 API,可以用来实现企业级的面向服务体系结构的应用程序(Service-oriented Architecture,SOA)和 Web 2.0 应用程序,如电子商务网站和ERP系统。本书第11章将介绍一个简单的Java EE中JSP技术的应用实例。1.4.3 Java ME

在Java网络应用大获成功的同时,也面临着更多设备都要接入互联网的挑战。由于众多接入设备的操作系统不同,输入、输出方式各异,内存和处理机的能力有限,因此对其可移植性提出了更强的要求。为了解决这个问题,Sun公司推出了Java的微型版,即Java ME。它专门针对小型的、资源有限的设备的Java应用程序进行开发,为开发各种嵌入式设备提供了标准化平台,它具有良好的可移植性和开放性。Java ME是专门面向小型手持设备应用软件开发平台的,可以应用到移动电话、个人数字助理(PDA)、网络IP电话、机顶盒、家庭娱乐多媒体系统、信息家用电器以及车载导航等系统中。Java ME包括灵活的用户界面、健壮的安全模型、许多内置的网络协议以及对可以动态下载的联网和离线应用程序的支持,它的出现为Java的发展提供了更为广阔的市场。本章小结

本章从Java语言发展、工作原理、特征、应用、运行环境、类型等几个方面进行介绍,使我们了解到,Java是一种完全面向对象的程序设计语言。它具有简单、稳定、与平台无关、安全、多线程等特点。它有3种应用体系,即Java SE、Java EE和Java ME。Java虚拟机是由Java解释器和运行平台构成的,它负责执行指令,管理内存和存储器。JDK是Java语言开发工具软件包。其中包含Java语言的编译工具、运行工具以及类库。

Java程序分为Java Application和Java Applet两类。Java Application是一种能在支持Java的平台上通过解释器独立运行的程序。Java Applet 则是嵌入HTML 编写的Web 页面、由浏览器内含的Java解释器解释执行的非独立程序。

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

下载完整电子书

若在网站上没有找合适的书籍,可联系网站客服获取,各类电子版图书资料皆有。

客服微信:xzh432

登入/注册
卧槽~你还有脸回来
没有账号? 忘记密码?