Transcript 第1章JAVA语言概述
Java面向对象程序设计
第 1 章 JAVA语言概述
1996年Java第一次发布就引起了人们的
极大兴趣。 Java以其固有的可靠性与安
全性不仅令Java程序员放心,也令用
Java程序的用户放心。它内建了对网络
编程、数据库连接、多线程等高级程序
设计任务的支持。对于程序设计人员来
说,使用Java无疑是一个好的选择。
通过本章的学习,你将了解以下内容:
Java语言的产生
Java语言的特点
Java运行环境
Java开发环境
初步了解Java程序
1.1 Java语言的产生
JAVA是由美国Sun公司1995年发布的,
其前身是名叫Oak的软件,是一种面向对
象的程序设计语言。因其具有跨平台型、
面向对象、安全性高等特点非常符合互
联网的需要 ,所以一经问世就引起计算
机行业的革命。业界一般认为:B语言导
致了C语言的诞生,C语言演变出了C++
语言,而C++语言将让位于Java语言。
1.1.1 现代编程语言:C语言
1989年12月,美国国家标准化组织(ANSI)制定了C语言的标准,
C语言被正式标准化。许多人认为C语言的产生标志着现代计算机
语言时代的开始。C语言是功能强大、高效的结构化语言,简单易
学,而且还有一个更重要的特点:它是程序员自己的语言。
1.1.2 面向对象程序设计语言:C++
1979年,当Bjarne Stroustrup在新泽西州的Murray Hill实验
室工作时,发明了C++。C++通过增加面向对象的特性扩充了C。
C++不仅具有C语言的所有优点,而且突破程序代码行的限制,
帮助程序员理解并管理更大的程序。
1.1.3 互联网与Java
在经历了以大型机为代表的集中计算模式和以PC机为代表
的分散计算模式之后,互联网的出现使得计算模式进入了网
络计算时代。网络计算模式的另一个特点是代码可以通过网
络在各种计算机上进行迁移,这就迫切需要一种跨平台的编
程语言,使得用它编写的程序能够在网络中的各种计算机上
能够正常运行,Java就是在这种需求下应运而生的。
1.2 Java语言的特点
1. 简单、面向对象和为人所熟悉
Java采用的是相对简单的面向对象技术,去掉了运算符重载、多继承的复
杂概念,而采用了单一继承、类型强制转换、多线程、引用(非指针)等方式。
无用内存自动回收机制也使得程序员不必费心管理内存,是程序设计更加简单,
同时大大减少了出错的可能。
2. 健壮并且安全
作为一种强制类型语言,Java在编译和连接时都进行大量的类型检查,
防止不匹配问题的发生。在Java程序中不能采用地址计算的方法通过指针访
问内存单元,大大减少了错误发生的可能性;而且Java的数组并非用指针实
现,这样就可以通过检查避免数组越界的发生。无用内存自动回收机制也增
加了Java的健壮性。
3.结构中立并且可以移植
任何种类的计算机,只有在其处理器和操作系统上有Java运行时
环境,字节码文件就可以在该计算机上运行。 Java运行时系统可以移
植到不同的处理器和操作系统上。
4.高性能
Java字节码格式的设计就是针对机器码的转换,实际转换时相当
简便,自动的寄存器分配与编译器对字节码的一些优化可使之生成
高质量的代码。随着Java虚拟机的改进和"即时编译"(Just In Time)
技术的出现,使得Java的执行速度有了更大的提高。
5.解释执行、多线程并且是动态的
(1) 全局变量
Java程序不能定义程序的全局变量,而类中的公共、静态变量就相当
于这个类的全局变量。这样就使全局变量封装在类中,保证了安全性,
(2) 条件转移指令
C/C++语言中用goto语句实现无条件跳转,而Java语言没有goto语
言,通过异常处理语句try、catch、finally来取代之,提高了程序的可读
性,也增强了程序的健壮性。
(3)指针
指针是C/C++语言中最灵活,但也是最容易出错的数据类型。在Java
中,程序员不能进行任何指针操作,同时Java中的数组是通过类来实现的.
(4)内存管理
在Java中,所有的数据结构都是对象,通过运算符new分配内存
并得到对象的使用权。
(5) 数据类型的一致性
在Java中,对数据类型的位数分配总是固定的,而不管是在任何的
计算机平台上。因此就保证了Java数据的平台无关性和可移植性。
(6)类型转换
Java语言中系统要对对象的处理进行严格的相容性检查,
防止不安全的转换。
(7) 头文件
Java不支持头文件,类成员的类型和访问权限都封装在一个类中,
运行时系统对访问进行控制,防止非法的访问。同时,Java中用
import语句与其它类进行通信,以方便访问其它类的对象。
(8)结构和联合
JAVA通过类把数据结构及对该数据的操作都封装在类里面。
(9)预处理
Java不支持宏定义在多线程机制中,不同的线程处理不同的
任务,互不干涉,不会由于某一任务处于等待状态而影响了其它任
务的执行,这样就可以容易的实现网络上的实时交互操作 .
1.3 Java运行环境
3.1 Java虚拟机
Java虚拟机是软件模拟的计算机,可以在任何
处理器上(无论是在计算机中还是在其它电子
设备中)安全并且兼容的执行保存在.class文件
中的字节码。Java虚拟机的“机器码”保存
在.class文件中,有时也可以称之为字节码文件。
Java程序的跨平台主要是指字节码文件可以在
任何具有Java虚拟机的计算机或者电子设备上
运行,Java虚拟机中的Java解释器负责将字节
码文件解释成特定的机器码运行。但Java虚拟
机不是跨平台的。在UNIX、Linux、windows和
部分实时操作系统上可以有Java虚拟机的实现。
1.3.2 无用内存自动回收机制
在程序的执行过程中,部分内存在使用过后就
处于废弃状态,如果不及时进行无用内存的回
收,就会导致内存泄漏,进而导致系统崩溃。
在C++语言中是由程序员进行内存回收的,
程序员需要在编写程序的时候把不再使用的对
象内存释放掉;而在Java运行环境中,始终存
在着一个系统级的线程,专门跟踪内存的使用
情况,定期检测出不再使用的内存,并进行自
动回收,避免了内存的泄露,也减轻了程序员
的工作量。
1.3.3 代码安全性检查机制
字节码的执行需要经过三个步骤,首先由类装载器
(class loader)负责把类文件(.class文件)加载到
Java虚拟机中,在此过程中需要检验该类文件是否符
合类文件规范;其次字节码校验器(bytecode verifier)
检查该类文件的代码中是否存在着某些非法操作,例
如applet程序中写本机文件系统的操作;如果字节码校
验器检验通过,由Java解释器负责把该类文件解释成
为机器码进行执行。Java虚拟机采用的是“沙箱”运
行模式,即把Java程序的代码和数据都限制在一定内
存空间里执行,不允许程序访问该内存空间外的内存,
如果是applet程序,还不允许访问客户端机器的文件系
统。
1.4 Java开发环境
Java不仅是编程语言,还是一个开发平台,
Sun公司把Java平台划分成J2EE、J2SE、J2ME
三个平台,针对不同的市场目标和设备进行定
位。Java技术给程序员提供了许多工具:编译
器、解释器、文档生成器和文件打包工具等等。
同时Java还是一个程序发布平台,有两种主要
的“发布环境”,首先Java运行时环境(Java
runtime environment,简称JRE)包含了完整
的类文件包,其次许多主要的浏览器都提供了
Java解释器和运行时环境。
J2EE是Java2 Enterprise Edition,主要目
的是为企业计算提供一个应用服务器的
运行和开发平台。
J2SE是Java2 Standard Edition,主要目
的是为台式机和工作站提供一个开发和
运行的平台。我们在学习Java的过程中,
主要是采用J2SE来进行开发。
J2ME是Java2 Micro Edition,主要面向消
费电子产品,为消费电子产品提供一个
Java的运行平台,使得Java程序能够在
手机、机顶盒、PDA等产品上运行。
1.4.1 JDK的下载和安装
1. 在浏览器中输入http://Java.sun.com/,可以看到下图所示的
Sun公司网站页面。
2. 在页面右边Popular Download栏中可看到最新版的SDK软
件包。单击“Java SE”超链接,可看到下图所示页面。
3. 单击“Download”按钮,出现下图;选中
“Accept License Agrement”单选按钮。
JDK有两种安装方式,一种是在线安装(Windows Online Installation);另
一种是离线安装(Windows Offline Installation)。这里我们选择离线安装,
单击“Windows Offline Installation Multilanguage”,下载“jdk-6-windowsi586.exe”到本地磁盘保存。
4. 运行下载“jdk-6-windows-i586.exe”软件包,将会出
现一个“许可证协议”的界面,如下图所示,单击“接
受”按钮继续,按照安装提示进行安装即可。
为JDK指定安装目录,默认是“C:\Program Files\Java\jdk1.6.0\”,
如果你想修改安装路径,就单击“更改”按钮。如下图所示,安装
路径选择好后,按“下一步”按钮继续。
同时,安装程序允许选择要安装的组件。如下图
所示,在想安装的组件前面单击鼠标进行选择。
可选组件包括:
开发工具—Java(TM)SE Development Kit6,包括专用的JRE6,必选组件。
演示程序及样例—包含源代码的小程序和应用程序的演示和样例,可选组件。
源代码—构成Java公共API的类的源代码,可选组件。
公共JRE—独立JRE。任何应用程序均可使用此JRE。此JRE向浏览器和系统注册
Java插件和Java Web Start。可以单独将其从JDK中卸载,建议选中。
选择完合适的安装组件后,单击“下一步”按钮。显示如下界面:
最后,单击“完成”按钮,JDK安装结束。
JDK包含了编写、运行Java程序所需要的工具:Java基本组件、库、
Java编译器、Java解释器、小应用程序浏览器,以及一些用于开发
Java应用程序的工具。其核心Java API是一些预定义的类库,开发人
员需要用这些类来访问Java语言的功能。JDK 6的目录结构如下图所
示:
bin子目录
开发工具,指工具和实用程序,可帮助你开发、执行、
调试和保存以Java编程语言编写的程序。
jre子目录
运行时环境,包含Java虚拟机、类库以及其他文件,
可支持执行以Java编程语言编写的程序。
lib子目录
附加库,开发工具需要的附加类库和支持文件。
demo子目录
演示applet和应用程序,带有源代码的Java平台编程
实例,包括使用Swing和其他Java基类的示例。
include子目录 C头文件,支持使用Java本机界面及Java 2平台的其
他功能进行本机代码编程的头文件。
src子目录
(位于src.zip中)组成Java 2 核心API所有类的Java
编程语言源代码。此源代码仅用于提供信息,以便帮
助开发者学习和使用Java编程语言。
1.4.2 JDK环境变量的设定
安装完JDK(JDK6)后,
需要设置计算机系统的
环境变量。本机使用的
是Windows XP操作系
统,设置JDK环境变量
的步骤如下:
1. 选中“我的电脑”,
右击选择“属性
(R)”,如下图所示。
2. 在弹出的“系
统属性”对话框
中选择“高级”
选项卡,单击
“环境变量
(E)…”按钮,
如下图所示。
3. 在“用户变量”选项区域中选择Path变量,然后单击“编辑”按
钮,出现“编辑用户变量”,在“变量值”文本框中插入
“C:\Program Files\Java\jdk1.6.0\bin;”,如下图所示。
4. 用同样的方法设置环境变量classpath,其值为
“.;C:\Program Files\Java\jdk1.6.0\lib”(包括
两项:当前目录以及JDK附加库,当前目录用分号前
面的点表示,分号后是JDK附加库)。如果用户变量
列表中没有classpath,单击“新建”按钮创建新的
用户变量classpath。
5. 设置完成后,单击“开始”->“所有程序”->“附
件”->“命令提示符”打开Dos窗口,在命令提示符
下输入“Java”或“Javac”回车后,如果出现其用
法参数提示信息,则配置正确,如下图所示。
1.4.3 Eclipse的下载、安装及汉化
Eclipse是一个非常优秀的集成开发环境, Eclipse是一个用于构建
Web和应用程序开发工具的平台,它本身并不是提供大量的最终
用户功能,而是通过插件来快速开发集成功能部件。下面简单介
绍Eclipse的下载及安装过程,
1. 下载英文版Eclipse。进入Eclipse的官方网站
http://www.eclipse.org,下载最新的Eclipse 3.x,单击“All
versions”可以看到以往的所有版本。我们下载的文件是eclipse-SDK3.2.2-win32.zip 。
2. 下载Eclipse多语言包。在“All versions”页面可以看到
“3.2.1_Language_Packs”,单击这个链接进入下载页面,只需要
把NLpack1-eclipse-SDK-3.2-win32.zip 下载下来,因为这个语
言包包含了简繁中文。
3. 安装英文版Eclipse。Eclipse是绿色软件,不用复杂的安装过程,
只需点击下载文件eclipse-SDK-3.2.2-win32.zip,解压到指定盘
符下,例如“C:\”,即可完成英文版Eclipse的安装。后进入
Eclipse目录,双击eclipse.exe就可以使用,不过这时启动的是英
文版。当然前提是已正确安装了JDK,推荐JDK5.0及其以上。
Eclipse的目录结构如下图所示:
4.中文版的安装。中文版必须在英文版安装完成后再安装。
如果使用的是Windows XP,中文版安装过程如下,在eclipse文件夹下,
新建language和links文件夹,把汉化包NLpack1-eclipse-SDK-3.2win32.zip里面eclipse文件夹中的两个文件夹featuresp和plugins复制到
eclipse\language里面;在links文件夹里用记事本写
path=C:\\eclipse\\language(这是本机的安装路径,大家写路径就根据
自己放的位置改),并保存为language.link。
如果使用的是Windows 2000及以上的版本,中文版安装过程就比较简单,
直接把汉化包NLpack1-eclipse-SDK-3.2-win32.zip解压到eclipse文件夹中,
覆盖两个同名文件夹featuresp和lugins 即可。
5.启动Eclipse,双击
eclipse文件夹下面的
eclipse.exe执行文件,即
可启动Eclipse,这时会出
现一个很酷的月食画面,
如下图所示。
再设定工作目录后,Eclipse
会显示它的缺省用户界面,注
意这时是中文见面,如下图所
示。
1.5 初步了解Java程序
Java程序分为Java application(Java 应用程序)
和Java applet(Java小应用程序)两种。
1. 5.1 第一个Java Application
在Java中,程序都是以类的方式组织的,Java源文件都保存在
以Java为后缀的.Java文件当中。经编译后生成的每个可运行的
程序都是一个类文件,或者称之为字节码文件,保存在.class文
件中。而作为一个Java application,类中必须包含主方法,
程序的执行是从main方法开始的,方法头的格式是确定不变的:
public static void main(String args[])
其中关键字public意味着方法可以由外部世界调用。main方法
的参数是一个字符串数组args,虽然在本程序中没有用到,但是
必须列出来。
System.out.println(“欢迎你学习Java语言!”),在屏幕上打
印“欢迎你学习Java语言!”文字。
下面让我们编写一个Java应用程序,它能够利用来自Java标准库的
System对象的“println”方法,在屏幕上打印“欢迎你学习Java语
言!”。
* @(#)Hello.Java
1.00 07/03/05
*
* Copyright (c) 青岛滨海学院 计算机科学技术系
* 山东青岛经济技术开发区 嘉陵江西路425号.
* All rights reserved.
*
* 下面程序利用Java标准库的System对象的“println”方法,
* 在屏幕上打印“欢迎你学习Java语言”。
*/
package Java.bh;
/**
*Hello.Java.
*
* @version
1.00 15 Mar 2007
* @author
Liu qingwu
*/
public class Hello {
/**
* ...缺省构造函数...
*/
public Hello() {
}
/**
* ..主方法(程序执行入口)...
*/
public static void main(String[] args) {
System.out.println(“欢迎你学习Java语言!”);/* 在屏幕上打印“欢迎你学习Java语言”..*/
}
}
1.5.2 使用记事本和JDK命令行工具编写Java程序
集成开发环境对于编写简单的程序来说显得有点笨重,
而且使用它们速度比较慢,需要高性能的计算机。对
于初学者来说,使用简单编辑工具以及JDK自带的命令
行工具进行简单程序设计培养良好的编程习惯有很大
帮助。
1. 使用记事本编辑
源程序
(Hello.java)。
2. 使用Java编译器(javac.exe),将Hello.java编译器成
字节码文件Hello.class。
3. 使用Java解释器(java.exe)解释执行Hello.class字节
码文件,如下图所示。
1.5.3 使用Eclipse中的JDT编写Java程序
“Java开发工具”(JDT)
是随Eclipse平台一起交
付的全功能的Java IDE。
JDT是对Eclipse工作台的
一组扩展,它允许用户
编辑、编译和运行Java
程序。下面通过创建上
述的Java项目,简单介
绍JDT的基本功能及使用
方法。启动Eclipse后:
1. 选择“文件(F)”菜单>“新建(N)”->“项目
(R)”,选择“Java”>“Java项目”,如下图所示。
2. 单击“下一步”,出现如下图所示的画面。在此画面
的“项目名”文本框中输入项目名“lecture”。项目内容
建议选择“使用缺省值(D)”。
3. 单击“完成”后,就在Eclipse上的“Java”透视图的
“包资源管理”视图中看到新创建了一个名为
“lecture”的项目。
4. 选中“lecture”项目,选择菜单中的“文件(F)”->“新建
(N)”->“类”。
5. 在弹出的新建Java类窗口里输入类的名称“Property”。然后,
通过在“你想创建哪些方法存根?”的复选框里选中“public
static void main(String[] args)”的选项来自动创建一个main方
法,如下图所示。
6. 单击“完成”后,一个Java编辑窗口就会被打开,如
下图所示。
7. 接下来在新
打开的编辑窗口
内,出入
Hello.java的程
序代码。JDT提
供代码辅助功能
及快速修正功能
大大提高编程效
率。
8. 修改“Hello.java”程序,可单击“保存”按钮或者按
“Ctrl+S”键保存程序,Eclipse将自动编译“Hello.java”,
并在“资源”透视图中的“lecture”项目下自动生成
“Hello.class”,如下图所示。
9. 选择“运行(R)”->“运行为(S)”>“Java应用程序”来执行程序并注意观察控制台
的输出信息,如下图所示。
本章小结
本章介绍了Java语言起源、产生的时代背景;
介绍了Java语言的特点以及Java运行环境的组
成及相关概念;Java开发环境的搭建,能够分
别使用记事本和JDK命令行工具和Eclipse集成
开发环境进行简单程序设计;主要任务是了解
Java的基本特点,掌握如何下载JDK软件包,
如何设置Java程序的开发环境,如何运行Java
程序,了解Java的概貌,为后续章节的学习做
好准备。