Java程序设计——原理与范例(txt+pdf+epub+mobi电子书下载)


发布时间:2020-09-21 14:06:38

点击下载

作者:胡平

出版社:电子工业出版社

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

Java程序设计——原理与范例

Java程序设计——原理与范例试读:

前言

作为发展速度最快、最为开放的面向对象编程平台,Java已成为网络环境下软件开发的首选技术之一。从消费类电子产品到超级计算机,从Android智能移动终端应用到企业级分布式计算,Java已经渗透到人们日常生活的方方面面。

作为具有12年Java平台下企业级商业项目设计开发经验及8年高校计算机专业课程教学经验的“实践派”,本书主编常常思考几个问题:为什么计算机相关专业的很多毕业生在毕业前会报名参加一些社会机构举办的价格不菲的Java技术培训(事实上,培训的大多数内容完全可以通过自学完成)?为什么很多毕业生到企业工作后,发现项目所使用的一些主流技术和框架,在校期间完全不熟悉?原因就在于一些Java基础教材在组织知识点时仅停留在知识点本身——“学院派”味道十足,未能形成完整的、贴近企业实际场景的知识体系,从而导致学生在课程结束之后,要么不知道应继续学习哪些可用于指导企业实际开发的知识,要么因基础不够扎实而不具备自主学习这些知识的能力。

本书主要定位于高等学校计算机学科相关专业的Java语言程序设计课程,对于从事Java平台下软件开发的技术人员同样适用。无论是行文风格,还是知识点的扩展,本书均以使读者具备今后快速、自主学习Java平台下企业级软件开发所涉及技术的能力为目标。全书以原理性、实用性和可实践性为编写总原则,系统介绍Java SE所包含的全部核心知识,同时还以附录列出主流IDE的使用、API文档和源码查阅、编程规范与最佳实践、Java相关技术的学习路线等带有强烈“工业”色彩的内容。相较于同类教材,本书具有以下特色。

1.注重核心知识,不追求“大而全”

Java不仅是一门编程语言,而且是语言、平台、标准和规范的总和,这一点可以通过其官方站点的文档所含内容之多得到印证;此外,由于Java的发展一直非常活跃,因此即使是只针对Java SE,也几乎不可能将其所有内容在一本书籍中详述殆尽。尽管一些Java基础教材包含的内容非常多,但大多浅尝辄止,或与实际开发关联度不大,有些甚至花了较大篇幅介绍官方早已不再推荐使用或已被取代的技术(如AWT组件、Applet等),而目前众多企业级应用所普遍使用的核心技术(如反射、正则表达式、泛型容器、注解等)却未提及,这不能不说是舍本逐末。

本书不追求“大而全”,而是着重介绍Java SE的核心及目前企业开发中经常使用到的知识,使得读者在学习完这些内容后,具备快速学习Java EE(也包括Java ME、Android)等其他领域知识的能力。

2.强调“惯例”的重要性

随着SSH(Struts、Spring、Hibernate)等开源框架在企业级Java项目开发中的广泛使用,近年来,在Java开发领域流行一句名言——惯例优于配置、配置优于编程。这句话强调了Java平台下越来越多的技术对“惯例”的重视,“惯例”已不再是企业对开发人员制定的可遵循可不遵循的代码书写规范,遵守惯例是成为一名优秀的Java程序员所必须具备的素质之一。

本书各示例程序无论从类、方法、变量的命名规范,还是代码的组织风格,都遵循着世界上绝大多数Java程序员所遵守的惯例,其目的就是使读者意识到惯例的重要性,并从一开始就养成遵守这些惯例的良好习惯。

3.在“快速入门”和“参考指南”之间合理平衡

学习一种新技术,阅读官方站点提供的文档无疑是较好的方式。通过阅读官方文档中类似于“Quick Start”(快速入门)的内容,可以对一种技术有一个概览性的认识——该技术是什么、能做什么,以及该技术的简单示例。若要以该技术开发实际的项目,则还需要继续阅读其“Reference/Guide”(参考/指南)——与该技术的高级主题相关的文档。相比之下,“快速入门”内容简单,读者通过其中可实践的示例,能够快速掌握一门技术最基本的用法,但其缺点也很明显——很难指导实际项目的开发;而“参考/指南”虽扩展和延伸度都较为深入,但初学者阅读这样的内容,不仅需要花费大量的时间,而且往往会因为没有实际项目经验而不知不觉地偏离学习主线,因此不适合初学者。

本书大多数知识点以“快速入门”型的示例程序开始,并在“综合范例”中做适当扩展后及时回归到知识主线。此外,在罗列相关API时也针对企业实际需求有所取舍,以期在“快速入门”和“参考/指南”之间找到一个合理的平衡点。

4.从“编程”过渡到“设计”

软件项目的成功实施离不开经验丰富的系统分析和设计人员,“底层的设计”比“上层的编程”更为重要——若底层设计考量充分,即使上层某个模块的代码写得很糟糕,最坏的情况也只是重写该模块;反过来,糟糕的设计不仅会增加上层各模块的编程难度,更为严重的是,需求的一点点变更(软件项目的需求变更是频繁且无法避免的)都可能引起现有代码的大面积重写,从而大大增加了项目失败的风险。因此,在有了一定的编程经验之后,读者应多关注设计、模式和架构等更高层面的知识。

本书在讲解知识点的过程中,适当安排了一些设计模式方面的内容,并通过10余个综合范例引导读者加深对软件设计层面的理解,为其今后进入软件从业人员金字塔上层提供可能。

本书由安徽工程大学计算机与信息学院胡平老师统筹,全书共分为17章,其中,第12章由张义老师编写,第14章由汪国武老师编写,第2、4、11章由长江大学计算机科学学院李鹏老师编写,其余各章及附录由胡平老师编写。感谢安徽工程大学周鸣争教授认真细致地审阅了本书全稿,并提出了许多宝贵意见,同时也感谢电子工业出版社章海涛编辑为本书出版所做的大量工作,与志同道合的人一起讨论共同关心的问题是愉快的,工作也因此而变得更有动力!

因时间仓促加之编者能力所限,书中难免存在不妥和错漏之处,敬请读者朋友批评指正。

2013年3月第1章 概述

本章主要介绍Java语言的历史、特点、平台、版本及编程环境的配置等,并通过一个简单的例子介绍Java程序的基本结构和编程步骤。学习本章内容时,读者应着重理解Java语言的特点、平台组成及编程环境的配置,这将有助于后续章节的学习。1.1 Java语言的诞生及发展1.1.1 Java的诞生

1990年12月,Sun公司的工程师Patrick Norton获得了公司的一个名为Stealth的研究项目,该项目被改名为Green之后,James Gosling(后来被誉为Java之父)也加入了Patrick的研究团队。

随着项目的进行,Sun公司预测未来科技将被广泛应用于家用电器领域,于是团队开始改变Green项目的目标—研究用于下一代智能家电程序的新技术。团队最初考虑使用C语言,而包括Sun公司当时的首席科学家Bill Joy在内的很多成员发现,C语言及其API在某些方面并不能满足项目要求,他们需要的是一种易于移植到各种不同硬件设备上的新技术。为此,Gosling起初试图修改和扩展C语言的功能,后来由于某些原因而放弃了,随后他设计了一种全新的编程语言—Oak(橡树,灵感源于他办公室外的树)。1992年,Green项目开始瞄准电视机顶盒市场,但由于当时的市场环境等因素,项目并未在该领域产生任何商业效益。

1994年6、7月间,在经历了一场历时3天的头脑风暴讨论后,团队决定再一次改变目标—将Green项目应用于万维网。由于当时Oak[1]商标已经被一家显卡公司注册,于是团队将Oak语言更名为Java,并提供了1.0a版本的下载。在1995年3月的Sun World大会上,Java语言被首次公开发布,并获得了当时的主流浏览器Netscape的支持。1996年1月,Sun成立了Java业务部门,专门负责Java相关技术的开发。1.1.2 Java的发展历程

从诞生至今,Java技术取得了巨大的发展,表1-1列举了其中的一些里程碑事件。表1-1 Java发展历程中的里程碑事件续表1 Google发布Android后短短一年多的时间便开始迅速占领智能手机市场,截至2012年2月,搭载Android操作系统的智能手机已占全球智能手机市场52.5%的份额,大幅超过诺基亚的Symbian和苹果的iOS。

经过十余年的发展,Java已经由一门编程语言逐渐演变成为平台、架构、标准和规范的总和,其在各个重要的行业和领域均得到了广泛的应用。迄今为止,Java已吸引了全球1000多万名软件开发者,采用Java相关技术的设备已超过60亿,其中包括8亿台计算机、30亿部手机,以及其他智能移动设备。1.2 Java语言的特点

Java诞生并发展于互联网兴起的时代,它继承和舍弃了当时一些主流编程语言各自的优缺点,这也注定了其具有区别于其他编程语言的特点,具体表现在以下方面。

1.简单

Java语言的语法与C语言很接近,使得大多数编程者能够快速学习和使用Java。另一方面,Java舍弃了C++中很少使用的、晦涩且容易出错的特性,如运算符重载、多重继承等。特别地,Java还从语法层面取消了指针,同时提供了自动内存回收机制,使得编程者不必频繁编写代码显式地释放内存。

2.完全面向对象[2]

在Java世界中,万事万物皆对象。与C++不同,Java对面向对象的要求十分严格,任何变量和方法都只能包含于某个类的内部,这使得程序的结构更为清晰。Java提供了封装、继承和多态等基本的面向对象特性,并且只支持单继承。为了能表达多重继承的语义,同时避免引入如C++的多重继承所带来的复杂性,Java使用了接口的概念—类可以继承另一个类,同时也能实现若干个接口。此外,Java提供了全面的动态绑定机制,而不像C++只能对虚函数使用动态绑定。总之,Java是完全的面向对象编程语言。

3.分布式

作为诞生并发展于互联网兴起时代的编程语言,Java提供了丰富的用于编写网络应用程序的API,这在Java EE中体现得尤为明显。Java提供的RMI(Remote Method Invocation,远程方法调用)机制甚至允许执行网络中另一台机器上的代码,这使得一个Java程序可以被分布到网络中若干不同的物理机器上,并形成一个逻辑上的整体。更为重要的是,这种分布机制所涉及的细节对于程序的编写者和使用者来说几乎是完全透明的—跨机器的通信就如同访问本地资源一样简单。

4.安全

Java程序经常需要被部署在开放的网络环境中,为此,Java从诞生之初就非常重视安全性。例如,在编译阶段进行语法、语义和类型安全检查;类被装载到Java虚拟机时进行字节码校验等。对于通过网络下载的类,Java也提供了多层安全机制以防止程序被恶意代码侵害,这些机制包括代码行为检查、分配不同的命名空间以防止本地同名类被替换等。此外,Java还允许用户自定义安全管理器,以便灵活控制访问权限。

5.健壮

Java的设计目标之一是协助开发人员编写出各方面可靠的程序。Java的强类型检查、异常捕获及处理、垃圾自动回收等机制为程序的健壮性提供了重要保证。此外,前述的安全检查机制也使得Java程序更具健壮性。

6.平台中立与可移植

Sun在Java发布之初便宣称“Write Once,Run Anywhere”,即每个Java程序可以不加任何修改而随处运行。然而,互联网是由各种异质平台组成的,这种异质既包括硬件(如CPU)也包括软件(如操作系统)。为使Java程序能够运行在网络中的任何平台,Java源文件被编译为平台中立(即无关)的字节码文件,后者可以在所有实现了相应规范的Java平台上运行。因此,Java程序的编写者无须考虑程序将来会被放到何种软硬件平台上运行,真正做到了二进制级别的可移

[3]植性。

7.解释型

如前所述,Java源文件被编译为平台中立的字节码,后者是CPU无法直接理解的,因此需要由平台上的Java虚拟机将这些字节码“解释”成CPU能够理解的指令并交由CPU执行。平台中立与可移植性决定了Java是一种解释型的编程语言。

8.高性能

由于存在解释的过程,故从理论上来说,Java程序的执行性能是低于传统的编译型语言(如C++)的,在Java诞生之初,事实上也的确如此。但与同为解释型的脚本语言(如Perl、VBScript、JavaScript等)相比,Java的性能却要高得多。近年来,随着JIT(Just In Time,即时的)编译及HotSpot(一种新的Java虚拟机规范)等字节码优化技术的出现,Java程序的性能已非常接近于C++,对于绝大多数应用,这种性能差距是完全可以接受的。从另一个角度看,Java以极小的性能损失为代价换取的平台中立与可移植性却是非常有价值的。

9.多线程

多线程使得一个程序(进程)可以同时执行多个子任务,从而提高系统资源利用率或带来更好的交互体验。与C++借助操作系统或第三方类库来实现多线程的方式不同,Java在语言级就支持多线程,因此Java的多线程比C++更为健壮。

10.动态

Java从一开始就被设计成动态的、可扩展的面向对象编程语言,使得用Java编写的程序能够较好适应不断变化的运行环境和业务需求。除了接口所提供的动态特性外,Java语言的动态性更多体现在反射机制上。反射机制允许程序在运行阶段动态访问类和对象的元数据(即描述数据的数据),这使得Java语言比那些直接被编译成本地代码的语言更具动态性。

11.开放

与其他众多技术不同,Java从诞生之初便坚持开放路线,任何个人和组织都可以免费下载JDK核心类库的源代码,也正因如此,任何[4]Java开发者都能扩展官方代码从而创建出适合自己需求的类库。此外,开发者还能以提交JSR(Java Specification Request,Java规范请求)的方式,建议官方为JDK的下一发布版本增添某些新特性和服务。总而言之,开放性使得Java语言的功能和特性日趋丰富,同时也使得开发Java程序越来越方便。

基于上述特点,Java已成为网络环境下软件开发的首选技术之一。从消费类电子产品到超级计算机,从智能移动终端应用到企业级分布式计算,Java无处不在。1.3 Java平台及版本

平台(Platform)通常指运行程序所需的软硬件环境,它是操作系统与底层硬件的组合。Java平台仅指运行在硬件平台之上的软件环境,它是运行Java程序所必需的环境,因此也称为Java运行时环境(Java Runtime Environment,JRE)。1.3.1 平台组成

Java平台具体由JVM(Java Virtual Machine,Java虚拟机)和API(Application Programming Interface,应用程序编程接口)组成,如图1-1所示。

1.Java虚拟机

Java源程序文件(扩展名为.java)被编译为类文件(扩展名为.class)后,后者包含的字节码(Bytecode)无法直接被CPU理解,需要由一个特殊的程序进行翻译和解释,该程序被称为Java虚拟机,如图1-2所示。不同的软硬件平台只需安装对应的Java虚拟机,同一个类文件便能不加修改地运行在各种平台上,从而保证了Java程序的可移植性。图1-1 Java平台的组成图1-2 Java程序的执行过程

2.API

API是编程语言提供的一组具有基本功能的组件库(如C语言的库函数),编程者可以在程序中直接调用它们。对于Java来说,其API是一些类文件,因这些类文件的数量众多(往往多达几千个),故将它们打包成一个zip格式的压缩文件,该文件的扩展名[5]为.jar(Java ARchive,Java归档),简称jar包。1.3.2 版本划分

从JDK 1.2开始,Java被划分成3个版本—J2SE、J2EE和J2ME,以开发不同级别的硬件平台与计算环境下的Java程序。JDK 6.0发布时,3个版本被重新命名为Java SE、Java EE和Java ME。(1)Java SE:Java Standard Edition,Java标准版。标准版适合开发运行于客户端的命令行或图形用户界面程序(通常称为桌面程序)。Java SE包含了Java的核心API,并为Java EE提供支撑。Java初学者应从标准版开始,这也是本书基于的版本。(2)Java EE:Java Enterprise Edition,Java企业版。企业版适合开发和部署分布式的、业务逻辑相对复杂及数据量相对庞大的企业级应用。Java EE构建于Java SE的基础之上,其核心是一套关于组件和服务的规范与参考实现,如JSP、Servlet、EJB、JPA、JMS和JTA等,使得网络中所有遵循Java EE规范的异构平台和系统能够良好通信和交互。(3)Java ME:Java Micro Edition,Java微型版。微型版适合开发运行在移动设备(如手机)或其他嵌入式设备(如电视机顶盒)上的Java程序。由于这些设备的计算能力、存储容量、能源、网络带宽及屏幕分辨率等都较计算机弱,因此,Java ME的虚拟机与核心API使用了Java SE的子集。此外,Java ME还提供了一些可选API以支持某些移动设备特有的功能,如多媒体、游戏和蓝牙通信等。世界上绝[6]大多数的手机都不同程度地支持Java ME规范。

需要说明的是,Java的优势和强大之处更多地体现于企业版,绝大多数读者在学习完标准版之后,应继续学习企业版。此外,学习微型版之前也应先学习标准版。1.3.3 Java程序的种类

不同版本下的Java程序具有不同的开发方式和运行特点,这些程序可以分为以下几类。(1)Standalone Application:独立应用程序,通常简称为应用程序。这种程序有且仅有一个main方法,虚拟机将该方法作为程序的执行入口点。根据运行界面的不同,独立应用程序又可分为控制台(Console,即命令行)独立应用程序和图形用户界面独立应用程序。以Java标准版开发的大多属于独立应用程序,本书后续各章节中的程序也是如此。(2)Applet:小程序,也称为浏览器小程序。这种程序不能独立执行,一般通过两种方式执行:①嵌到HTML网页中,由浏览器(如[7]IE)来执行;②由JDK自带的Applet查看器执行。实际上,Applet的本质仍是图形用户界面应用程序,其也是以标准版开发的。(3)JSP/Servlet:JSP(Java Server Page,Java服务器网页)是Java平台下的动态网页技术标准,属于Java企业版定义的规范之一。JSP的实质是嵌入了Java代码的HTML页面,其必须被部署到支[8]持JSP规范的Web服务器中,并通过客户端的浏览器进行访问。Web服务器首先将JSP编译为Servlet(服务器小程序),然后执行页面中的Java代码,并将动态生成的内容填充到HTML页面中,最终将HTML页面返回给客户端的浏览器。(4)MIDlet:MIDlet(Mobile Information Device Applet,移动信息设备小程序)是指运行在支持Java ME规范的移动设备上的Java程序。

Java是跨平台的编程语言,事实上,除了上述几种程序之外,还有一些基于其他平台的Java程序,如目前非常热门的Android程序等,这些程序运行在平台厂商特定的一套规范和API之上。此外,随着Java的不断发展,近年来还出现了一些新的Java技术,如JSF、Java FX等,但使用这些技术开发的Java程序目前尚未形成主流,故未列出。1.4 JDK安装及环境配置

与其他任何编程语言一样,编程之前需要安装和配置开发环境。对于Java来说,这个开发环境就是JDK(Java Development Kit,Java开发工具包)。考虑到大多数读者使用的是Windows操作系统,下面[9]以Windows XP为例,讲解Java开发环境的安装和配置。1.4.1 下载与安装

进入Oracle官方网站(www.oracle.com),在页面顶部的导航栏依次选择Downloads→Java for Developers(因页面更新,可能与本书所述不一致,下同),进入JDK下载首页。

单击首页中的“Java Platform(JDK)”,进入下载链接页面。接着单击“Accept License Agreement”(接受许可协议),页面下方有对应不同软硬件平台的JDK下载链接,名称如“jdk-6u26-xxx-yyy.zzz”。其中,“6”代表JDK主版本号(即6.0);“u26”代表主版本的第26次更新(Update);“xxx”代表操作系统类别(如windows);“yyy”代表CPU的架构,PC一般选择i586或x64,若安装的是32位操作系统则只能选择i586,64位操作系统选择i586或x64均可;“zzz”代表安装文件的格式。笔者机器为Windows XP(32位),故应选择“jdk-6u26-windowsi586.exe”,请读者根据自身使用的机器下载对应版本。

运行下载的安装程序,其会自动匹配操作系统的默认语言,用户可以更改JDK安装路径(本书使用默认的C:\Program Files\Java\jdk1.6.0_26\),如图1-3所示。尽管可以为JDK指定任意的安装路径,但考虑到今后在命令行中切换路径方便起见,尽量不要指定过深的或含有中文字符的路径。图1-3 JDK安装选项界面

用户可以选择要安装的功能(默认全部安装),具体包括以下各项。(1)开发工具:必选,包含开发Java程序所必需的工具和类库等。选择此项后,还会安装一个JDK专用的JRE(位于JDK的安装路径之下)。(2)演示程序及样例:必选,包含一些演示程序,可以作为今后学习的参考。(3)源代码:可选,包含JDK运行时类库(名为rt.jar,包含了Java的核心API)的源代码。若选择此项功能,则JDK安装目录下将有一个名为src.zip的文件,对其解压,可得到rt.jar中绝大多数类文件的源代码。在今后的编程中,建议读者经常查看和跟踪源代码,以深入理解某些API的执行细节,因此推荐安装。(4)公共JRE:可选,包含一个独立于JDK的JRE,其默认安装在与JDK相同的路径之下。公共JRE会向操作系统和浏览器注册,以便后二者能识别并调用合适的程序去执行Java程序。因安装开发工具时也会安装JRE,故此处的JRE可以选择不安装,并不会影响Java程序的开发和调试。值得一提的是,如果读者只是想运行而非开发Java程序,则可以下载单独的JRE安装文件。(5)Java DB:可选,包含一个纯Java编写的关系型数据库管理系统。Java初学者一般不会涉及数据库编程,此外,有其他免费的、功能更强大的数据库管理系统可供使用(如Oracle、MySQL等),因此可以不安装。

单击下一步按钮,便可开始JDK的安装,如果之前选择了安装公共JRE,则安装过程中还会提示用户选择公共JRE的安装路径(默认为C:\Program Files\Java\jre6\)。1.4.2 JDK的目录结构

JDK安装目录的结构如图1-4所示,其下的主要子目录说明如下。图1-4 JDK目录结构(1)bin:包含若干用于编译、运行和调试Java程序的基本工具(实际上是一些可执行程序),具体如表1-2所示。此目录需要被配置到环境变量中(见1.4.3节)。表1-2 JDK下bin目录包含的主要命令(2)demo和sample:包含JDK自带的演示程序和样例,以及它们的源代码。(3)jre:JDK专用JRE的根目录,是运行Java程序必需的环境,其有两个子目录。

① bin:包含若干可执行程序和DLL文件,Java虚拟机会用到这些文件。

② lib:包含JRE用到的核心类库、属性设置和资源文件等。此目录下的rt.jar需要被配置到环境变量中(见1.4.3节)。(4)lib:包含开发工具要用到的其他类库及文件等。

初学者只需掌握javac和java命令,其他命令使用相对较少。1.4.3 配置环境变量

从JDK 5.0开始,安装程序会自动将JDK的有关信息写入操作系[10]统(如Windows的注册表),特别是采用了IDE后,配置环境变量已不再是必需的操作。尽管如此,初学者仍需熟练掌握JDK环境变量的配置细节,很多Java程序,特别是那些用到了第三方类库的程序,能否成功运行往往与环境变量有着密切的关系。在讲解环境变量的配置之前,有必要先知道环境变量的作用是什么,下面通过一个试验来说明。

打开命令行窗口(开始→所有程序→附件→命令提示符),其当前工作路径(“>”左边的路径)为“C:\Documents and Settings\Administrator”,这是命令行窗口被打开时的默认工作路径,其中的Administrator是系统的当前登录用户名(在读者机器上可能不同)。接着,在命令行窗口中输入“calc”(Windows自带的计算器程序,位于C:\WINDOWS\system32下)并回车,如图1-5所示。图1-5 默认路径下输入calc

不难发现,尽管路径“C:\Documents and Settings\Administrator”下并没有名为calc.exe的程序,但命令行仍然成功打开了计算器程序,这是为什么呢?现在打开“环境变量”对话框[我的电脑(右键)→属性→高级→环境变量],在对话框下部的“系统变量”中找到名为Path的项并双击,如图1-6所示。图1-6 Path环境变量

Path环境变量的值由多个路径组成,彼此以西文分号分隔。其中一个路径名为%SystemRoot%\System32,此处的%SystemRoot%并不是真正的路径,而是表示引用名为SystemRoot的环境变量的值,该变量在系统注册表中定义,其值为Windows XP的默认安装根目录—C:\WINDOWS。因此,%SystemRoot%\System32等同于C:\WINDOWS\System32,而这正是calc.exe所在的目录。当在命令行窗口中输入一个非内部命令并回车后,系统会依次在Path环境变量中指定的各个路径中寻找该命令,若找到则执行该命令,否则报错。[11]

现在删除变量值中的%SystemRoot%\System32部分,并单击两次确定直至回到“系统属性”对话框,然后重复之前图1-5所示的操作(注意要关闭并重新打开命令行窗口,否则无效)。如图1-7所示,尽管工作路径及输入命令与之前一样,但由于此时已将calc.exe所在的路径从Path环境变量中删除,故而报错了。图1-7 默认路径下输入calc(修改了Path环境变量之后)

通过上述试验不难看出,将某个路径(假设为P)添加到Path环境变量中的作用在于—能够在命令行的任何工作路径下执行P路径下的程序,而不用先将工作路径切换到P。

理解了环境变量的作用之后,下面来对其进行配置。JDK的环境配置涉及两个环境变量:Path和Classpath。

1.配置Path

类似地,为了能够在命令行的任何工作路径下执行JDK安装路径中bin目录下的工具命令,需要将bin的完整路径添加到Path环境变量中,如图1-8所示。图1-8 在Path环境变量中添加bin所在路径

几点说明:(1)若Path环境变量不存在,可自行新建。(2)bin目录不是指JDK安装路径中jre目录下的bin。(3)添加的路径要一直指定到bin。(4)因路径较长,为避免出错,可先浏览到bin目录,然后复制地址栏并粘贴到变量值中。(5)可以将bin路径添加到Path的任何位置,但要在合适位置输入一个西文分号以与其他路径隔开。输入原则是保证除了首个路径外,其余路径左边均有一个分号。

单击两次确定并重新打开命令行窗口,输入javac并回车,若配置成功则出现如图1-9所示界面,以后便可以在命令行的任何工作路径下执行bin下的工具命令。图1-9 配置Path环境变量后输入javac命令

2.配置Classpath

在“环境变量”对话框中单击下部的“新建”按钮(注意有两个),在弹出对话框的“变量名”一栏输入“Classpath”,“变量值”一栏输入“.;C:\Program Files\Java\jdk1.6.0_26\jre\lib\rt.jar”,如图1-10所示。图1-10 新建Classpath环境变量

几点说明:(1)Windows不区分大小写,故写成Classpath、classpath或CLASSPATH均可。(2)class与path之间没有空格。(3)变量值开头是一个西文点号和一个西文分号。(4)分号后要一直指定到rt.jar这个文件,而不只是其所在的路径,这是初学者容易犯的错误之一。(5)同样,为避免出错,可先浏览到lib目录,然后复制地址栏并粘贴到变量值中,再输入“\rt.jar”。

关于Classpath环境变量的作用,将在1.5节中通过实例加以阐述。1.5 第一个Java程序

安装并配置完JDK之后,便可以开始编写Java程序了。本节的目的并不在于讲解Java语言的语法细节,而是期望通过一个简单的程序让读者对Java程序的编写步骤有一个粗略的认识,同时阐述1.4节中配置的Classpath环境变量的作用。

编程之前,先请读者思考一个问题—用什么样的工具来编写源文件?在学习C语言时一般采用Turbo C或Visual Studio等IDE。然而,IDE的使用并非必需,任何编程语言的源文件都是纯文本格式的,因此,从理论上来说,仅仅采用简单的纯文本编辑工具(如Editplus、UltraEdit、Windows自带的记事本等)就能编写任何语言的源文件了。

初学者需要掌握Java编程的一些基本原理和细节,而这些往往只有通过命令行的方式才能有较为深刻的理解,另一方面,很多IDE在某些操作和配置上也与这些原理和细节有着一定的联系。因此,建议读者在初学阶段使用纯文本编辑器来编写Java程序,在理解了必要的[12]原理和细节后再使用IDE,以提高开发效率。

接下来,我们开始编写本书的第一个Java程序。

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

下载完整电子书


相关推荐

最新文章


© 2020 txtepub下载