Java程序设计实用教程(第5版)(txt+pdf+epub+mobi电子书下载)


发布时间:2020-07-29 04:53:28

点击下载

作者:叶核亚

出版社:电子工业出版社

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

Java程序设计实用教程(第5版)

Java程序设计实用教程(第5版)试读:

前言

软件设计的思想和方法以及所采用的程序设计语言,都必须跟随软件时代的发展而不断改进和更新。面向对象程序设计方法是目前软件开发的主流方法。Java语言是目前功能最强、应用最广泛的一种完全面向对象程序设计语言,具有成熟而严密的语法体系、跨平台特点和强大的应用系统设计能力。今日Java应用无处不在,Java作为程序设计的首选语言,其重要性毋庸置疑。因此,采用 Java 语言进行面向对象的程序设计方法训练是十分恰当的,是程序设计系列课程教学改革的必然,完全符合本科培养目标的要求。

开设Java程序设计课程的目的:一是采用Java语言进行程序设计和面向对象方法的基础训练,二是运用操作系统中的线程、文件概念,网络原理,数据库原理等基础理论进行线程、文件、网络、数据库、Web等应用的设计训练。

Java技术不仅能够实现这些功能,还可以使算法表达更简明、更直接,性能更好。

本书是“十二五”普通高等教育本科国家级规划教材,可作为普通高等学校计算机及相关专业本科生的Java语言程序设计课程教材。

本书力求展现“理论基础厚实、全面展现应用技术、加强工程应用能力培养”的鲜明特色,不仅全面阐述面向对象概念,还通过各种应用实例展示Java技术,充分体现Java语言的优越性,让学生看见、体会并深刻理解,再通过强化实践环节等措施加强工程应用能力的培养,努力探索出一套适合工科院校计算机类专业的教学方案,体现 Java 作为专业主干课程的重要作用。这也是新工科建设的落实。(1)理论基础厚实

本书全面、系统地介绍构成Java应用程序的基本要素和必备知识,包括Java跨平台的运行机制、Java语言的语法基础和面向对象基本概念,着重介绍类的封装、继承和多态等面向对象的核心特性,以及接口、内部类、包、异常处理等Java特有的实现机制。

全书结构安排合理,由浅入深,层次分明,章节之间有机衔接,前后呼应,内容涉及的广度和深度符合本科培养目标的要求,配套教学资源齐全。(2)全面展现Java应用技术

本书介绍Java语言的图形用户界面、多线程、输入/输出流和文件操作、网络通信、数据库应用、Web 应用等应用技术。这些知识和技术与现实世界联系紧密,实用性较强,学生易于理解,但实现起来较困难。本书以面向对象理论为基础,以广阔的实际应用为背景,采用一个个贴近生活实际的实例展现 Java 应用技术,展现面向对象思想的作用和使用方法,说明为什么Java能够在网络环境中被广泛应用,Java的哪些机制使其具有独特的魅力,从而能够更深入地理解面向对象思想的精妙。(3)加强工程应用能力培养“Java程序设计”是一门理论与实践并重的课程,不仅要理解基础知识,更要培养软件设计的基本技能。实践性环节是巩固所学理论知识、积累程序设计经验的必不可少的重要环节,是提高程序设计能力和计算机操作技能的有力保障。

注重理论基础和实用技术相结合,注重在实践环节培养程序设计的基本技能,是本书的重要特色。本书将程序设计能力的锻炼和提高设计为一个循序渐进的过程,将基本原理体现在从原理叙述、例题、思考题等课堂讲授环节,到课后习题、上机实验、课程设计等实践性环节,让学生经历“先见识、再模仿、最后自主创新设计”的学习过程,并培养良好的程序设计习惯。

每章安排有习题和上机实验题,给出详细的实验训练目标、设计内容和设计要求。实验题精心选择,形式多样,生动有趣,引人入胜,难度逐步增加。

针对课程设计的实践性环节,本书给出了综合应用程序设计实例,详细说明了需求方案、设计目标、设计任务、模块划分、功能实现、调试运行等环节的设计方法,贯彻了理论讲授和案例教学相结合的教学方法,既训练学生具有扎实深厚的基本功,也具有可扩展素质和很强的创新能力。

本书采用的运行环境有JDK 8、MyEclipse 2015、MySQL 5.7数据库和Tomcat 8.0。

这是一本写程序设计的书。程序设计有一些基本原则和道理。程序是设计出来的,程序员必须具备基础知识和基本技能,在写程序之前需要根据实际应用需求,从全局角度通盘规划考虑,精心策划,选择采取什么策略,清楚有哪些方法可以做得成,每种方法都有什么优缺点,明白为什么要这样做,那样做为什么就不可以,等等。

程序中发现错误了怎么办?这是什么错误,是否能改正,如何改正?这种思路的程序是否值得再继续做下去?作为一个有价值的软件系统,程序要能够预见可能出现的错误,不能预见的错误要事后补救。程序员要知道如何避免和如何补救,不能补救的错误要及时放弃,采取别的策略。总之,无论采用什么方法都要把事情做成。

程序写完了,即使调通了,还必须再想想:程序还有哪些不足?还有哪些情况没有考虑到?是否还能进一步提高算法效率?要把事情做成,还要把事情做好,尽一切努力做得更好。不知不觉间,程序设计能力就会提高很多,“轻舟已过万重山”。

写程序是创作,创作过程是艰苦的,也是快乐的。当程序调试通过时,我们感受到成功的喜悦,哼着小曲,自鸣得意,心情畅快,“春风得意马蹄疾”。人的一生能有值得沉浸其中的事业是幸福的。

全书由叶核亚编著,南京大学计算机科学与技术系陈道蓄教授主审。

本书第1版于2003年出版,岁月如梭,转眼已十多年。感谢电子工业出版社十多年来对我的坚定支持;感谢陈老师认真细致地审阅全稿;感谢王少东、刘晓璐、徐金宝、彭焕峰、刘爱华、温志萍、程初老师和吴尚泽、郁中斐、吴腾阳等同学提供的帮助;感谢众多读者朋友的坚定支持以及提出的宝贵意见。大家对我的指导和帮助使我受益匪浅,受用终身。能与志同道合的人一起讨论共同关心的问题是愉快的,工作也因此变得更有动力。

对书中存在的不妥与错漏之处,敬请读者朋友批评指正。同时,呼吁每位读者购买正版图书,享受正版带来的有用的知识和应有的服务。

本书的全部例题和配套课件可从华信教育资源网站(http://www.hxedu.com.cn)下载,也可发邮件至yeheya@x263.net索取。

作者

第1章 Java概述

物竞天择,适者生存。同自然界的进化规律一样,程序设计语言、程序设计思想的变化和发展也是随着实际应用需要而变化和发展的。我们今天所看到、所使用的程序设计语言,经历了一系列竞争和淘汰之后仍然存在,说明它们有存在的道理,必定各有所长。这是一种自然选择的结果。

1995年,Java语言以一种具有跨平台特性、完全面向对象的程序设计语言问世,展现的是与众不同的全新的面貌,当年就获评十大优秀科技产品。之后凭借跨平台、健壮、安全、高效这些适应网络运行需要的特点,Java快速成长,不但在Internet上游刃有余,而且通过Java ME、Java SE、Java EE三大平台,其应用领域全面覆盖嵌入式应用、桌面应用和企业级应用,所表现出的强大的应用系统设计能力,使Java无处不在。

本章简要介绍Java的特点和核心技术;介绍Java Application应用程序的基本形式,以及由虚拟机支持的运行机制;以Windows操作系统的Java SE版本为例,介绍JDK的安装和设置方法,以及编译、运行Java应用程序的方法;介绍在MyEclipse集成开发环境中编辑、编译和运行Java应用程序的方法,以及程序调试技术。

1.1 了解Java

1.1.1 Java的诞生和发展

1.前身

1991年,Sun公司成立Green项目组,目的是开发嵌入家用电器的分布式软件系统,如交互式有线电视和家用电器的设备控制等,使电器更加智能化。由于这些电子设备品种繁多且标准各异,Green项目组希望该控制系统具有简单、可靠、安全、容易联网和跨平台等特性,并且具有支持系统开发的编程工具。

Green项目组最初采用C++语言开发,由于C++语言太复杂且安全性差,不能满足要求,于是Green项目组研究设计了一种新语言,取名为Oak(橡树),因为Green项目组负责人James Gosling办公室窗外有一棵大橡树。

Oak语言保留了C++语言的语法,为了简单、可靠、安全等特性,放弃了C++语言的一些具有潜在危险特性的内容,如资源引用、指针、运算符重载等。Oak具有的与平台无关的特性,使其适合网络编程。1994年,Green项目组用Oak编写的Web浏览器(称为HotJava)展示了Oak作为Internet开发工具的能力。

2.诞生

由于商标冲突,1995年,Oak语言更名为Java语言。Java取名于印度尼西亚的爪哇岛,它盛产咖啡。Java语言的标志就是一杯热咖啡。美国著名杂志《PC Magazine》将Java语言评为1995年十大优秀科技产品。

Java包括Java编程语言、开发工具和环境、Java类库等。JDK(Java Development Kit,Java开发工具包)提供Java运行环境。1996年,Sun公司发布JDK1.0和HotJava。HotJava通过嵌入在Web网页中的Applet运行Java程序,一年之内,Microsoft、Netscape等公司的Web浏览器宣布支持Applet,而IBM、Apple、DEC、Adobe、Silicon Graphics、HP、Oracle和Microsoft等公司相继购买Java技术许可证,从此Java成为应用广泛的程序设计语言。

3.Java 2平台

1998年,Sun公司发布JDK 1.2,即Java 2 SDK(Software Development Kit)。得益于跨平台特性,Java 2不仅能够应用于智能卡和小型消费类设备,还能够应用于大型服务器系统;提供的接口机制使得软件开发商、服务提供商和设备制造商能够紧密配合,降低了软件开发和维护的工作量。

Sun公司采取开放策略,在其网站上可以免费获取JDK,这也是Java语言能够迅速发展的一个重要因素。不同的操作系统平台需要使用不同版本的JDK。

4.Java ME、Java SE、Java EE三大平台

1999年,Sun公司推出的JDK 1.3将Java平台划分为J2ME、J2SE和J2EE,这三个平台分别定位于嵌入式应用、桌面应用和企业级应用,使Java技术获得了最广泛的应用。用户可根据实际应用领域的需求选择不同的Java平台。

2004年,Sun公司发布J2SE 1.5,自此J2SE 1.5更名为J2SE 5.0。2005年,Sun公司发布Java SE6,并取消Java 2名称,Java三大平台分别被更名为Java ME、Java SE、Java EE。

Java ME(Java Micro Edition)是适用于小型设备和智能卡的Java嵌入式平台,提供智能卡业务、移动通信、电视机顶盒等智能电器控制功能。

Java SE(Java Standard Edition)是适用于桌面系统的Java标准平台。Java SE SDK也简称JDK,为创建和运行Java程序提供了最基本的环境,包含Java编译器、Java类库、Java运行环境和Java命令行工具。

Java EE(Java Enterprise Edition)是Java的企业级应用平台,提供分布式企业软件组件架构规范,具有开放性、可扩展性、集成性和Java EE服务器之间的互操作性。

Web应用是目前展示和操纵数据的主流技术。在Web应用开发技术中,Java EE优势显著,能够满足企业级应用对软件系统在功能、安全性、可靠性、高效性等方面的高要求,Java EE已成为分布式企业级应用(电子商务)开发技术事实上的工业标准。

Oracle公司于2009年收购了Sun公司,于2014年发布JDK 8,于2017年9月发布JDK 9。1.1.2 Java的特点

随着网络的飞速发展而发展,作为软件开发的一种革命性技术,Java的地位已被肯定。它在如此短暂的历史过程中,经历如此规模的发展壮大,显然并不是偶然的,其有着内在的基础和外在的机遇。Java语言建立在成熟的算法语言和坚实的面向对象理论的基础上,具有强大的应用系统设计能力,其具备的跨平台特性、面向对象和可靠性、安全性等特点是它能够充分适应网络需要的无可比拟的优势。Java成为目前网络编程的首选语言,充分说明了Java语言的设计思想和其具有的特点适应了网络发展的特殊需要。不仅在网络应用方面,还在企业级应用领域,Java以更简单、更精练的方式实现了C++语言的所有功能。如今,Java技术是当今世界信息技术的主流之一。

Java应用如此广泛是因为其具有多方面的优势。

1.跨平台特性

跨平台特性,也称为平台无关性,是指一个应用程序能够运行于不同的操作系统平台上,即Sun公司设计Java的宗旨“Write once,run anywhere”。跨平台特性使Java应用程序可以运行在多种操作系统(Windows、UNIX等)平台上,这是Java区别其他高级语言的最重要标志。

Java采用虚拟机技术支持跨平台特性。Java虚拟机(Java Virtual Machine,JVM)是一套支持Java语言运行的软件系统,定义了指令集、寄存器集、类文件结构栈、垃圾收集堆、内存区域等,提供了跨平台能力的基础框架,如图1-1所示。Java虚拟机运行于操作系统之上。

C/C++、Java语言的运行方式比较如图1-2所示。图1-1 Java虚拟机及其作用图1-2 C/C++、Java语言运行方式比较

Java虚拟机是怎样运行Java程序的?首先来看C/C++语言的运行方式,以此作比较。

在Windows操作系统中,C/C++等其他高级程序设计语言将源程序(*.c/*.cpp)编译生成可执行文件(*.exe,见图1-2),再由Windows直接执行EXE文件。其他操作系统的可执行文件格式显然与此不同,如果程序要在不同操作系统之间运行,则必须移植。即使相同的操作系统,程序也会因不同的开发环境而不同。

Java语言将源程序(*.java)编译生成字节码文件(*.class),也称为类文件,它是Java虚拟机的可执行文件格式,与各操作系统平台无关。

Java虚拟机中的解释器负责解释执行字节码文件,将字节码解释成由本地操作系统支持的机器指令,解释一句,执行一句。因为每种操作系统都配有各自的Java虚拟机,所以这种运行方式使得一份Java源程序能够在不同操作系统上运行,“Write once,run anywhere”,实现了跨平台特性。

Java虚拟机执行应用程序具有以下3个特点。

动态性:管理功能全部采用动态方式,如动态分配数组的存储空间、动态创建对象、动态连接数据库等,这些动态特性使Java程序适合在网络上运行。

异常处理:提供可靠的异常处理机制。

线程:采用多线程方式运行,各线程独立执行,并协调一致地处理共享数据。

Java语言本身设计也体现出跨平台特性。例如,int类型占用4字节(32位),与操作系统是16位、32位或64位无关。而C语言的int类型占用的字节数是可变的,与操作系统有关,16位操作系统的int类型占用2字节,32位操作系统的int类型占用4字节。

2.完全面向对象和简单性

面向对象是当前软件开发的先进技术和重要方法。面向对象的概念是基于信息隐藏和数据抽象类型的概念,利用类和对象的机制将数据和方法封装在一起,通过统一的接口与外界交互;通过类的继承机制实现代码重用。面向对象方法反映了客观世界中现实的实体在程序中的独立性和继承性。这种方法有利于提高程序的可维护性和可重用性,还有利于提高软件开发效率和程序的可管理性。

Java语言从C++语言发展而来,有选择地继承了C++语言的语法规则和面向对象的基本机制,放弃了C++语言中一些含义模糊、过于复杂、安全性差、不适合网络应用的规则,但没有放弃与此相关的功能,采用更简单、功能更强、性能更好的方式实现C++语言的所有功能。

Java语言对C/C++语言的基本语法改进说明如下。

① 不支持全局变量和宏替换,使用最终变量代替宏替换,避免全局变量和宏替换副作用。

② 为每种数据类型分配固定长度,实现数据类型的跨平台特性。

③ 进行类型相容性检查,防止不安全的类型转换。

④ 不支持goto语句。

⑤ 不支持指针类型,通过引用模型实现了指针的功能。

⑥ 不支持结构类型,使用类代替;不支持联合类型。

⑦ 不支持头文件,用import语句声明导入指定包中的类或接口。

⑧ 内存动态存储且自动管理,动态申请数组和对象的存储空间,自动释放空间,没有指针操作方式。

Java语言是完全面向对象的,所有设计都必须在类中实现,一个Java应用程序就是多个类的集合。Java语言对C/C++语言的面向对象机制改进说明如下。

① 为8种基本数据类型提供相应的基本数据类型包装类,使基本数据类型与类相关联,体现完全面向对象。

② 将数组设计为引用类型,每个数组都有长度属性。

③ 不支持类似C语言那样的面向过程设计,不支持全局函数,所有函数都必须写在类中;函数参数不支持默认值形式,避免因默认值造成的二义性;函数内不能用static声明局部变量。

④ 不支持友元类和运算符重载,因为友元破坏封装性。

⑤ 提供单继承机制,即一个类只有一个父类,这样使得所有类(包括Java声明的类和程序员声明的类)能够形成具有树结构的类的层次体系,Java为这个树结构设置了根类Object。Object类声明对象的基本状态和行为,这些行为可被所有对象继承。子类不能继承父类的构造方法,但可以继承析构方法;所有成员方法都可在运行时被覆盖,都是C++含义的虚函数;不支持多继承,提供接口,通过“单继承+接口”方式实现多继承功能。

Java语言提倡简单性原则,对一个问题只提供一种简单、精练的表达方法,这样使程序简单、直接并且不造成歧义。例如,使用下标形式对数组元素进行操作,则不需要使用指针;方法(函数)采用返回值或引用类型参数返回结果,也不需要使用指针;有了类,则不需要结构类型;构造方法采用重载方式,则不需要采用参数默认值形式,避免产生歧义;通过成员方法实现类的操作,则不需要重载运算符等。因此,放弃结构、指针、多继承等,并没有影响Java语言的功能,Java语言提供的机制具有更强的功能和更高的性能。

3.可靠性

C++语言在稳定性和可靠性方面最大的隐患是使用指针和内存缺乏自动管理。Java在语言和运行架构两个级别上提供程序运行稳定性和可靠性保证。(1)语言级别

Java语言提供严密的语法规则,在编译和运行时进行严格检查,降低程序出错的可能性。例如,boolean与int类型数据不能进行运算,数组下标不能越界,避免有效数据被覆盖,等等。

Java语言提供异常处理机制,使程序具备在运行过程中及时发现并处理运行时错误的能力,保证Java程序运行的稳定和可靠。(2)运行架构级别

Java语言提供的资源回收(garbage collection)机制,对内存资源进行自动管理,跟踪程序使用的所有内存资源,自动收回不再被使用的内存资源。因此,程序中不需要写释放内存空间的语句。Java自己操纵内存减少了内存出错的可能性,减轻了程序员的工作量,提高了程序运行的可靠性。

4.安全性

Java采用域管理方式的安全模型,无论是本地代码还是远程代码,都可以通过配置策略,设定可访问的资源域。这种策略使未经授权的代码不能对用户本地资源进行操作,更好地支持企业级应用,同时消除了区分本地代码和远程代码带来的困难。例如,Applet应用程序在将远程Web页面下载到本地运行时,Java会进行严格的代码安全性(code security)检测,限制许多可能危害网络安全的操作,如不能访问本地文件、不能建立新的网络连接等。1.1.3 Java核心技术

Java的部分核心技术说明如下。

1.Application应用程序

Java应用程序有两种形式:Application和Applet。

Application应用程序能够独立运行,有控制台和图形用户界面两种运行方式。【例1.1】 接收命令行参数的Application应用程序。

本例演示基于控制台运行的Application应用程序,程序及说明如下。

① Java应用程序的结构就是类,由关键字class声明类;Hello是类名,必须符合标识符语法,约定类名首字母大写;关键字public表示类的权限是公有的。

② Java语言是完全面向对象的特性体现在,所有设计都必须在类中实现。类中包含成员变量和成员方法,语句必须写在类的成员方法中。

③ main()是类首先执行的方法,参数args是String字符串数组,args接收命令行参数。

④ System.out是标准输出常量,调用print()或println()重载方法,可将基本数据类型、字符数组、字符串及对象等各数据类型参数值转换成字符串输出。

⑤ 文件名为Hello.java,文件名必须与类名相同。其编译、运行操作详见1.2节。

2.图形用户界面

图形用户界面(Graphical User Interface,GUI)是使用图形方式,提供应用程序与用户进行数据交流的界面,从而实现人机交互,就像Windows系统的窗口。

Java提供窗口、文本编辑框、按钮、菜单等构成图形用户界面的组件类,采用委托事件处理模型响应用户对鼠标、键盘等操作的事件,详见第6章。

3.线程

线程机制将一个进程划分成多个线程,每个线程执行一个特定功能,多个线程并发执行。共享资源的交互线程之间存在两种关系:竞争关系和协作关系。

Java语言支持线程的并发执行;提供线程同步机制,采用线程互斥解决交互线程竞争共享资源问题;采用线程同步解决交互线程间协作通信问题,详见第7章。

4.流和文件操作

流是指数据传输。按照流的方向性,Java将流分为输入流和输出流,输入流从外部设备(文件)读取数据,输出流向外部设备(文件)写入数据。不仅如此,在内存的进/线程之间,甚至两台计算机的进/线程之间,也可以使用流进行数据通信。

Java提供操作系统中文件管理的所有功能,包括对文件进行的顺序存取和随机存取操作,File类记载文件属性信息,对指定目录的文件列表,打开或保存文件时使用文件对话框组件,文件过滤器等。详见第8章。

5.Socket通信:分布式网络应用

URL(Uniform Resource Locator,统一资源定位符)是文件相对于Internet的地址,包括传输协议、主机、端口、文件名等。Java提供URL类,可通过URL访问网络上的指定文件。

Socket通信是指两台计算机的两个进程之间的数据通信。Socket包含一个主机的IP地址和一个端口(进程)。一对Socket标识通信的两端:发送进程和接收进程。常用功能有网络聊天程序。

Java支持TCP Socket通信和UDP Socket通信。

TCP(Transmission Control Protocol,传输控制协议)是传输层的一个面向连接的协议。TCP Socket通信,先建立一条TCP连接,再使用字节流进行双向数据传输,可实现网络聊天功能。它的原理就像打电话,先拨通对方号码,建立连接后再通话;通话结束,连接中断。

UDP(User Datagram Protocol,用户数据报协议)是传输层的一个无连接的协议。UDP Socket通信,先将数据组织成数据报(Datagram),再向指定的Socket发送数据报;对方接收,解压数据报,获得数据。它的原理就像邮寄包裹,发送方准备包裹,到邮局向对方寄包裹;邮局系统负责层层转运,最终送到指定地点;接收方到邮局取包裹,打开。详见第9章。

6.数据库应用

数据库技术是数据管理的技术,有效地管理和存取大量的数据资源。

Java提供JDBC,支持数据库应用。JDBC(Java DataBase Connectivity,Java数据库连接)是Java访问关系数据库的应用程序接口,提供多种数据库驱动程序类型,提供执行SQL语句来操纵关系数据库的方法,使Java应用程序具有访问不同类型数据库的能力。详见第10章。

7.Java EE:Web应用

Web应用提供Internet的浏览服务。Java早期采用Applet技术实现动态Web页面设计,目前采用JSP等技术实现服务端的动态Web页面设计。详见第11章。

JSP(Java Server Pages)是Sun公司1999年推出的一种动态网页技术标准,它在HTML文档中嵌入Java语言,是运行于Web服务端的标记语言。JSP基于Java体系的Web开发技术,可以建立跨平台、安全、高效的动态网站。

JSP的优点包括:① 跨平台特性,② 效率高,一次编译,多次运行。

JavaBean是Java的对象组件技术,提供组件复用的关键技术,类似Windows的ActiveX。EJB(Enterprise JavaBean)提供企业级的JavaBean。

JSP支持JavaBean和EJB。

8.JavaMail:邮件服务

JavaMail提供E-mail邮件服务的支持类库,支持SMTP和POP3协议。

SMTP(Simple Mail Transfer Protocol,简单邮件传输协议)定义邮件用户代理(Mail User Agent,MUA)向SMTP服务器发送邮件的操作指令,以及SMTP服务器之间的通信规则。

POP(Post Office Protocol,邮局协议)定义邮件用户代理从POP3服务器接收邮件的通信规则。

1.2 JDK

JDK是Java开发工具包,包括Java类库、Java编译器、Java解释器、Java运行环境和Java命令行工具。JDK提供Java程序的编译和运行命令,但没有提供程序编辑环境。1.2.1 JDK的安装和设置

1.安装JDK

从Oracle公司网站http://www.oracle.com/technetwork/java下载以下两个文件。

① jdk-8u121-windows-x64.exe,64位Windows的JDK 8安装程序。若是32位Windows,则下载jdk-8u121-windows-i586.exe。

②../javase/documentation,下载jdk-8u121-docs-all.zip,JDK 8 API文档。

运行安装程序,默认安装路径为 C:\Program Files\Java\jdk1.8.0_121。安装过程中,可以设置安装路径及选择组件,默认组件选择是全部安装。注意:默认安装路径中包含当前版本信息。安装成功的 JDK目录结构如图 1-3所示。图1-3 JDK的目录结构

JDK的目录结构说明如表1-1所示,bin中包括的主要工具如表1-2所示。表1-1 JDK的目录结构表1-2 bin中的主要工具

3.设置环境变量

由于Java是平台无关的,因此安装JDK时Java不会自动设置路径,也不会修改注册表,需要用户自己设置环境变量,但不需要修改注册表。

在Windows中需要设置path和classpath两个环境变量。path变量指出可执行文件路径,classpath变量指出Java包的路径。以下介绍设置环境变量的批命令。(1)编辑批命令文件

创建E:\myjava文件夹,在其中新建一个文本文件,文件名是jdk8.bat,.bat称为批命令文件。采用记事本程序打开它,添加两行设置命令如下:

注意:① D:\Program Files\Java\jdk1.8.0_121是 JDK当前安装路径,环境变量值需要根据实际的安装路径而更改。Windows 系统不区分字母大小写,因此变量名和路径字符串中的字母大小写均可。

② path值中的“%path%”表示path的原有路径,可以省略。如果省略,同时省略“;”,此时path原路径将不复存在,会影响其他程序运行。

③ 分号“;”是两个路径之间的分隔。变量值中不能有多余的分号或空格。

④ classpath值中的“.”表示当前目录,通常写在最前面,作为系统查找类的第一个路径。

⑤ 采用记事本保存文件名时,默认文件类型是.txt。查看文件类型,上述文件名不能是jdk8.bat.txt。(2)执行批命令

执行“开始▶程序▶附件▶命令提示符”,打开 MS-DOS窗口,输入以下命令,执行批命令 dk8.bat,完成 path和 classpath变量的路径j设置,如图 1-4所示。图1-4 设置环境变量和编译、运行Application应用程序

其中,“>”是DOS提示符,每行“>”之前的是DOS显示的当前路径,“>”之后的是输入的DOS命令(加下画线)。

图1-4显示了jdk8.bat的执行结果,设置path变量路径时没有包含“%path%”。1.2.2 Application应用程序的编辑、编译和运行

1.编辑

采用记事本编辑例1.1的Java源程序,保存文件名为E:\myjava\Hello.java。

注意:采用记事本保存时,文件名不能是 Hello.java.txt。

2.编译

在MS-DOS窗口中执行编译命令javac.exe编译.java文件,输入编译命令如下,见图1-4。

如果编译正确,将生成字节码文件Hello.class。如果系统未找到javac.exe命令,说明Path环境变量设置不正确;如果程序中有语法错误,系统将终止编译并给出错误信息。

3.运行

执行命令java.exe运行Application应用程序的字节码文件.class,输入命令如下,见图1-4。

Java Application应用程序从main()方法开始执行。如果一个类中没有包含main()方法,则该类不可运行,Java虚拟机将抛出异常,表示运行错误。

4.命令行参数

命令行参数是指运行时跟在执行命令后作为输入数据的多个字符串,是控制台应用程序的一种数据输入方式。带参数的运行命令如下,多个字符串参数以空格分隔,运行结果见图1-4。如果没有命令行参数,则数组长度args.length的值为0。

5.运行结果重定向

采用DOS重定向运算符>可将运行结果写入指定文件,命令如下,见图1-4。如果指定文件不存在,将创建它,否则重写。

也可采用DOS重定向运算符>>,将运行结果添加到指定文件之后,命令如下:1.2.3 包

1.包的概念

一个Java应用程序通常需要使用多个类,包括Java声明的类和程序员自定义的类,每个类都对应一个.class文件。这些类显然不会存放在一个文件夹中。那么,如何表示使用哪个文件夹中的哪个类?Java采用“包”机制区别类名字空间,说明如下。

① 从逻辑概念看,包(Package)是类的集合,一个包中可以有多个类,类名之间不能相同;不同包中的类名则可以相同。

② 从存储概念看,包是类的组织方式,一个包就是一个文件夹,一个文件夹中存储多个.class文件。

包与类的关系就是文件夹与文件的关系。文件是信息集合,文件夹是文件的组织方式。包中可以有子包,子包对应一个子文件夹,构成嵌套结构,称为包等级。子包引用格式如下:

包{.子包}

其中,包等级之间使用点运算符“.”分隔,“{}”表示可重复0至多次,本书下同。

2.Java API的常用包

API(Application Programming Interface,应用程序接口)定义了许多通用的常量、函数、类、接口等功能,提供给应用程序使用。每种程序设计语言都有各自的API。

Java API提供Java应用程序所需要的常量、类、接口等,统称为类库,按照功能,将类库分为java、javax等包,java包有lang、util等子包。Java API常用包说明如表1-3所示。表1-3 Java API的常用包

3.引用包中的类

程序运行时,Java虚拟机默认在当前文件夹中寻找指定类的字节码文件。当需要访问其他文件夹中的类时,不仅要指定文件夹路径,还要在程序中指定包名。

带包名的类或接口的语法格式如下,其中,“|”表示或者,本书下同。

包{.子包}.类|接口

4.查看Java API

解压JDK文档jdk-8u121-docs-all.zip,打开..\docs\api\index.html文件,在浏览器中查看java.lang包中的Math类,如图1-5所示,左上窗显示Java的包,左下窗显示类,右窗显示类中的方法。java.lang.Math类定义了许多方法实现数学函数的功能。图1-5 查看Java包中的类

注意:文档中标有“Deprecated”的方法已被 Java废弃,不建议使用。

5.查看Java API源程序及包等级

Java类的源代码是公开的,在JDK安装路径中的src.zip文件包含API所有类的源文件。这些源程序文件都是按照包等级组织的,包等级与文件实际存放的文件夹层次是一致的,如图1-6所示。在JDK安装路径的..\jre\rt.jar压缩文件中存储的是.class文件。图1-6 Java的包等级及对应的文件夹层次

6.导入包

java.lang语言包由Java自动导入,可省略包名,如Math.PI、Math.sqrt()等。如果要使用Java其他包中的类,必须用import语句导入。

import语句声明导入一个包中的类或接口,语法格式如下,其中,import是关键字,“*”表示包中的所有类或接口。

import语句必须写在类声明之前。例如:

7.声明类所在的包

package语句指定当前文件中声明的类或接口所在的包或子包,语法格式如下,其中,package是关键字。

package 包{.子包};

在源程序文件中,package语句只能写一次,且必须写在第一行,即写在类声明之前。多个类可以属于同一个包。【例1.2】 创建及使用包。

程序员可以创建包,存放自定义的类提供应用程序使用。本例以mypackage包为例,说明创建包、设置环境变量及导入包的操作。

① 创建包并设置classpath环境变量。

创建文件夹E:\myjava\mypackage,包名为mypackage。

打开之前的jdk8.bat批命令文件,在设置环境变量classpath的语句最后,增加mypackage包的路径“E:\myjava”如下:

在图1-4所示的MS-DOS窗口中,再次执行批命令jdk8.bat。

② 声明Point类在mypackage包中。

在E:\myjava文件夹中创建Point.java文件,声明Point类如下,类的概念详见第3章。

编译Point.java命令如下,再将生成的Point.class文件移动到mypackage文件夹中。

注意:Point.class没有包含 main()方法,不能运行。

E:\myjava中的文件,以及mypackage包中的Point.class,如图1-7所示。图1-7 myjava中的文件、mypackage包中的Point.class

③ 导入mypackage包中的Point类。

在E:\myjava文件夹中创建Line.java文件,声明Line和Line_ex两个类如下。

其中:图1-8 计算直线 Line(point1,point2)长度

① 若省略import语句,则Point类必须用全称mypackage.Point。

② 计算直线Line(point1,point2)长度的算法描述如图 1-8所示,设 a、b、c为直角三角形的三边长度,有,c即为所求直线长度。

上述Line.java源程序文件中声明了两个类,每个类编译后均生成一个字节码文件。编译Line.java命令如下,生成Line.class和Line_ex.class。

运行Line_ex.class命令及结果如下。

注意:如果 main()方法写在 Line类中,则可运行 Line.class,而不需要 Line_ex类了。

8.Java源程序结构

一个java源程序文件的结构如下:

9.JAR压缩文件

采用JDK的文件压缩命令jar.exe,可以将若干包(其中.class文件及子包)压缩成Java的压缩文件(.jar);若要引用.jar中的类/接口,

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

下载完整电子书


相关推荐

最新文章


© 2020 txtepub下载