第1章 Java语言概述
1.1 Java语言发展和特点 1.1.1 Java语言的发展 美国Sun公司的Java(JDK 1.0)正式发表于1995年5月。Java的口号是“Write Once,Run Anywhere”。Java是基于网络的,融合了C和C++等语言的优点,是一种与众不同的面向对象的通用程序设计语言。 Java的名称使用了提议者在喝一杯Java咖啡时无意提到的Java。
1.1.2 Java语言的特点 Java是一个迅速发展的网络编程语言,它是一种新的计算概念。 作为一种程序设计语言,它简单、面向对象、分布式、解释执行、不依赖于机器的结构、具有可移植性、鲁棒性、安全性、并且是多线程的、动态的,具有很高的性能。 Java最大限度地利用了网络。一种称为Java小程序(Applet)的Java程序是动态、安全、跨平台的网络应用程序,可在网络上运行而不受CPU和环境的限制。
1.1.3 Java程序的工作机制 编程人员首先编写好源代码,然后经编译生成一种二进制的中间码,称为字节码(byte code),最后再通过运行与操作系统平台环境相应的一种称为Java解释器的运行机构来执行编译生成的字节码。 Java的解释器和运行时系统又称为“Java虚拟机(JVM,Java Virtual Machine)”
1.2 面向对象程序设计 Java语言是一种面向对象(OO,Object Oriented)的程序设计语言。无论是Java应用程序还是Java小程序,它们都是以类为基础构建的。
1.2.1 传统与面向对象程序设计语言 传统的面向过程的程序设计方法从解决问题的每一个步骤入手,较适合于解决比较小的简单问题。如典型的面向过程的程序设计语言BASIC、C语言等。 面向对象的程序设计方法则按照现实世界的特点来管理复杂的事物,把它们抽象为对象,具有自己的状态和行为,通过对消息的反应来完成一定的任务。
面向对象程序设计(OOP)中的“对象”是什么含义呢?借用一个现实世界中“车”的例子来说明对象的含义。 “车”有各种各样的种类,如手推车、自行车、摩托车、汽车等。从各种车可归纳出它们的共性,如车有车轮、重量、颜色等,是汽车还有车速、耗油量等。这些是从“车”这类事物抽象出来的共性,也即所谓的数据、数据成员或属性。车不仅有这些静态的数据,还有很多与这些数据有关的动作和行为,如车的启动、加速、刹车和修理等,这就是所谓的代码、成员函数或方法。将上述车的数据和动作代码组合起来,就得到一个车类(class)。
有了抽象的车类后,一辆实际的车,如一辆自行车、一辆汽车等,就是车类的一个一个对象或实例。对象是一个实体,而不象车是一个抽象概念。现实世界中,您我使用的一辆自行车、一辆汽车是车类的一个对象。 类是一类事物共性的反映,而对象是一类事物中的一个,是个性的反映。每个对象都有与其他对象不完全一样的特性。
1.2.2 对象的性质 一个对象就是数据和相关的方法的集合,其中,数据表明对象的状态,方法表明对象所具有的行为。 面向对象的概念构成了Java的核心。面向对象具有封装、继承、多态三个主要特性。
封装性: 操纵汽车时,不用去考虑汽车内部各个零件如何运作的细节,而只需根据汽车可能的行为使用相应的方法即可。实际上,面向对象的程序设计实现了对象的封装,使用户不必关心对象的行为是如何实现这样一些细节的。面向对象设计的核心一环是将处理数据的代码、数据的声明和存储封装在一起。 一个对象中的数据和代码相对于程序的其他部分是不可见的,它能防止那些不希望的交互和非法的访问。 Java封装的基本单元是类。 封装的目的是为了减少复杂性。
继承性: 可将世界看成相互关联的可划分层次的各种对象,如车、汽车和轿车。这里汽车是车的继承,而轿车又是汽车的继承。下一层次继承了上一层次的所有特性。一个多层次的继承关系构成了一个类树结构。 在面向对象的程序设计中,继承是指在已有类的基础上建立一个新类。新类自动拥有父类的所有元素:数据成员和成员方法,然后再根据需要添加新任务所需的数据成员和成员方法。 一个不由任何类派生来的类称为基类;一个派生类的最近的上层类叫做该类的父类;从某一类派生出来的类叫做该类的子类。
多态性: 不同的对象对于相同的方法表现其不同的理解和响应。可以想像的到:对于自行车和汽车,它们都定义了刹车的方法,但它们的刹车方法却是完全不同的。 在面向对象的程序设计语言中,多态性意味者一个对象具有多个面孔。Java通过方法重写和方法重载来实现多态。 通过方法重载,子类可以重新实现父类的某些方法,使其具有自己的特征。
1.3 Java程序举例 /* Hello.java */ 1.3.1 Java应用程序举例 【例1.1】 输出信息为“Hello,World!” 的Java应用程序。 /* Hello.java */ public class Hello{ // 一个Application public static void main (String args[]){ System.out.println(″Hello, World!″); }
【例1.2】显示信息为Hello World! 的Java小程序。 import java.awt.Graphics; import java.applet.Applet; public class HelloApplet extends Applet{ public void paint(Graphics g){ g.drawString("Hello World!",20,20); }
1.3.3 Java程序结构 Java程序由类构成,一个源程序文件允许最多一个public类,且源文件的文件名必须为这个public类的类名;若源程序文件中无public类,则可选择任意一个类(通常是第一个类或主类)的名称或者一个其他的名称作为文件名。 对Java应用程序来说,必须在一个类中定义有main()方法,包含main()方法的类是该应用程序的主类。 对Java小程序来说,它必须作为Applet类或JApplet类的一个子类,继承Applet或JApplet类的类是小程序的主类。
1.4 Java程序开发工具与开发方法 常用的Java程序开发工具有: 美国Sun公司的Java SDK、NetBeans; 微软公司的Visual J++; Borland公司的JBuilder等。 目前,Java SDK是命令行开发工具,而NetBeans、Visual J++、JBuilder是集成环境开发工具。 下面仅介绍Java SDK的使用方法。
Java SDK的意思是Software Development kit,即Java软件开发工具包(以前的版本也称为JDK)。目前,提供下载的SDK标准版软件最新正式版本为5.0,有不同操作系统的不同版本。下面的介绍采用Windows系统的版本。 可以从网址http://java.sun.com下载所需版本的SDK开发工具和API说明文档。
1.安装Java SDK开发工具 下载完成后运行开发工具包(自解压文件)即进行开发工具的安装。安装时,可指定安装到指定目标盘和目录,也可安装到默认的盘和目录。若用默认值,安装后,将在C盘根目录下创建一个与软件版本相应的主文件夹,可运行的程序工具安装在该文件夹的bin子文件夹中。对API说明文档,可用Winzip或WinRAR等软件进行解压操作,解压到主文件夹中去。 Java命令行方式的编程环境由一系列目录文件、类库字节码文件、动态连接库DLL文件组成,具体的命令文件包括:javac.exe、java.exe、javah.exe、javap.exe、jdb.exe、javadoc.exe、appletviewer.exe等。
设在D盘根目录下的USEJAVA目录中保存Java源程序文件。可在Windows的DOS(运行cmd命令)中用命令: 2.Java SDK开发工具基本使用方法 (1)设置运行环境 设在D盘根目录下的USEJAVA目录中保存Java源程序文件。可在Windows的DOS(运行cmd命令)中用命令: D:<回车> MD \USEJAVA<回车> CD \USEJAVA<回车> 为使用Java开发工具,可将Java命令程序所在目录设置到path搜索路径中。对Windows 9x,可在autoexec.bat批处理文件中书写命令: PATH C:\Java主文件夹\BIN;%PATH%
对Windows 2000/XP,可右单击“我的电脑”,在菜单中选择“属性”,再选择“高级”选项卡,选择“环境变量”(见右图),对系统变量的path项进行“编辑”,将Java的bin文件夹的路径添加进去。
D:\USEJAVA>javac Hello.java 以例1.1为例,首先用任意文本编辑程序(如Notepad.exe等)输入程序文本,并把它存入到当前文件夹一个名为Hello.java的文件中。然后对它进行编译: D:\USEJAVA>javac Hello.java 编译的结果是生成字节码(bytecode)文件Hello.class。最后用Java解释器来运行该字节码文件: D:\USEJAVA>java Hello 程序运行结果为显示“Hello,World!”。
D:\USEJAVA>javac HelloApplet.java 编译通过后得到字节码文件HelloApplet.class。再编写HTML(Hyper Text Markup Language超文本标记语言)文件,把该Applet嵌入其中,然后用appletviewer来运行,或在支持Java的浏览器上运行。
D:\USEJAVA>appletviewer HelloApplet.html <applet code=HelloApplet width=200 height=40> </applet> 其中用<applet>标记来启动HelloApplet,code指明字节码所在的文件,width和height指明Applet显示区域的大小,把这个HTML文件存入HelloApplet.html,然后运行: D:\USEJAVA>appletviewer HelloApplet.html 这时屏幕上弹出一个可调整大小的窗口,其中显示Hello World!。运行结果见下页图。
例1.2程序运行结果如下: