第 1章 Java入门
1.1 Java简介
?Java的崛起
?面向对象的程序设计语言
?Java平台和虚拟机
?两类 Java程序
?Java程序开发环境 ——SDK
Java的崛起
? 1991年 4月 8日,从工作站起家的 Sun公司为了把市
场扩大到消费电子产品,成立了一个专门的工作小
组,着手代号为,Green”的项目,目的是开发一个
分布式代码系统,让人们可以把 E-mail发给电冰箱、
电视机等家用电器,对它们进行控制,同它们进行
信息交流
? 应用的 C++进行开发。但是 C++太复杂,安全性也
差,最后不得不定义一套新的语言系统,于是便有
了 Oak的问世
? Oak一方面汲取了 C++中的有益成分,同时融进了
网络应用特性,可以称上是一种的精巧而安全的语
言了
? Mark Ardreesen的 Mosaic和 Netscape的巨大成功给
Oak项目组成员带来了新的希望,他们重整旗鼓,
对 Oak进行了一次新的整合,并取名为 Java,后用
Java编制了 HotJava浏览器,吹响了进军 Internet的
号角
? Java所特有的,write once,run anywhere.”(一次
编写,到处运行)的平台无关性的概念,与 Internet
的异构网络互连一拍即合,它特别适合于在网络开
发中使用
面向对象的程序设计语言
? Java语言是一种面向对象的程序设计语言,它通过
描述对象本身以及对象间的相互关系,并通过激发
对象间的相互作用,来求解问题
? 对现实世界中事物的对象,要由两个部分来描述,
一是其静态属性 ——对象的状态,用“数据”来描
述;一是其动态属性 ——对象的行为,用“方法”
来描述
? 在面向对象的程序设计语言中,并不是去定义一个
一个的对象,而是先定义同一类对象的模板 ——类
( class),再从类创建其对象
电子时钟的 Java描述
? 电子时钟的静态属性 ——电子时钟的状态,用变量
hour(时),minute(分),second(秒)描述
? 电子时钟的动态属性 ——电子时钟的行为,如显示
时间,设置时间等,用以下方法描述,
· getMinute ( )——显示“分”;
· getHour ( )——显示“时”;
· setSecond ( )——设置“秒”;
· setMinute ( )——设置“分”;
· setHour ( )——设置“时”。
class TimeClock
{
private int iSecond,iMinute,iHour;
public int getMinute ( ); // 显示, 分,
public int getHour ( ); // 显示, 时,
public void setSecond ( ); // 设置, 秒,
public void setMinute ( ); // 设置, 分,
public void setHour ( ); // 设置, 时,
}
类描述 符
类名
整数描述 符
语句结束 符
注释符






私有访问权 限修饰符
公共访问权限 修饰符
相关说明
? 从结构上看,类由类的首部和类体构成
? 类体由紧随类的首部的一对花括号及花括号中的一
些语句组成
? 类体中含有类的数据部分和类的方法部分,分别称
为类的成员变量和成员方法,它们都是类的成员
? 方法由方法首部和方法体组成
? 有些方法执行后要向调用者(不是标准输出)送回
一个数据,这样的数据称为方法的返回值
? 注释是对程序、程序的局部或一个语句的说明,用
于增加程序的可读性
? 这个 TimeClock是一个时钟类的界面,当此界面中
所有方法的方法体都定义后,就构成了一个时钟类,
由这个时钟类可以创建多个时钟对象
? Java是区分大小写字母的语言
? 程序员可以自己定义类,也可以使用事先已经定义
好的类
? 本例只是电子时钟类的设计的一个例子,它不是唯
一的
计算圆的周长和面积
class Circle{
float r; // 半径
final double PI = 3.14159; // 最终变量
Circle(float d){ // 构造方法
r = d;
}
double circum ( ){ // 求圆周长的方法
return 2 * PI * r;
}
double area( ){ // 求圆面积的方法
return PI * r * r;
}
}
Circle类中含有两个数据成员
? 半径 r和一个常数 PI( π),r使用了 float型,PI使用
了 double型
数据类型名
(关键字)
占用内存
空间 数值范围 十进制表数精度
int 4字节 -231~231-1
float 4字节 (± 3.4028235E+38f)~ (± 1.40239846E-45f) 6~7位
double 8字节 (± 1.79769313486231570E+308) ~(± 4.94065645841246544E-324) 15位
final
?PI由于加了,final”,表示在程序执行过程中
其值不能再变化,PI称为最终变量。最终变
量在程序中一般用大写
Circle类中定义了方法的结构
方法首部
方法体
{
}
方法首部描述
?方法名
?方法的返回值类型
?参数及其类型
?其他修饰符
Java基本的运算符
?+(加),-(减或负),*(乘),/(除)
?>(大于),> =(大于等于),= =(等于),
<(小于),<=(小于等于),! =(不等于)
?= 称为赋值号,意即将其右面的值送到左面
的变量中,相当于往一个内存单元中存放入
一个数据值。
类的构造方法
?类的构造方法与类同名,描述由类生成对象
的操作,在创建对象时由系统调用。下面的
主类定义中给出了构造方法的作用
主类
?Java应用程序由很多类组成,其中有且只有
一个主类。
?含有主方法 main( )的类称为 Java应用程序的
主类。
?Java规定,主类名必须与主类所在的文件名
相同。
?程序运行后,Java首先执行主类主方法中的
第一个语句
主类 —UseCircle的定义
class UseCircle{
public static void main(String args[ ]){
Circle aCirc = new Circle(5.3f); // 生成一个圆对象
double s = aCirc.circum( ); // 计算该圆对象的周长
double d = aCirc.area( ); // 计算该圆对象的面积
System.out.println("半径为," + aCirc.r + "的圆的周长为," + s);
// 输出周长
System.out.println("半径为," + aCirc.r + "的圆的面积为," + d);
// 输出面积
}
}
说明
?UseCircle类中,首先用 new命令来调用 Circle
类的构造方法来创建一个 Circle类的对象
aCirct
?用语法形式,对象名,成员名 ;调用 Circle类
中的成员
?调用系统方法 System.out.println( )输出结果
Java平台
? Java平台是一种纯软件平台,它需要其它基于硬件
的平台(如 Window2000,Linux等)的支持。
? Java平台由 Java虚拟机( JavaVM)和 Java应用程
序接口( JavaAPI)两部分组成。
? Java虚拟机易于被移植到基于不同硬件的平台上,
是 Java平台的基础; Java应用程序接口由大量已做
好的 Java组件(组件是一种类)构成,这个接口提
供了丰富的 Java资源。
Java虚拟机
?由于不同的机器有不同的机器语言,并且由
于操作系统环境的排他性,使得在一种平台
上开发的程序运行到另一个平台上时,多少
还要进行一些修改,这样就比较麻烦
?Java破解各机器不同的机器语言的策略是定
义出自己的一套虚拟机器 ——Java虚拟机
Java虚拟机的工作原理
编写 Java程序
Java编译器
Java源代码
(*.java文件 )
字节码
(*.class文件 )
Java虚拟机
Java解释器 for Windows Java解释器 for Unix Java解释器 for Mac OS
PC计算机 Unix服务器 Mac计算机
Java
? 一台 Java虚拟机就是一台 Java解释器。经过 Java解
释器的解释,才得到具体的机器可以执行的代码
? 通常把 Java程序的翻译过程称为半编译、半解释。
而其他语言程序要么是全编译,要么是全解释
? Java既是一种语言,也是一种平台。作为一种语言,
Java通过所谓“半编译、半解释”使得 Java程序具
有“一次编写,到处运行”的特点
两类 Java程序
?按照运行环境的不同,可将普遍使用的 Java
程序分为两种,
?Java应用程序( Java Application)。其是在
本机上由 Java解释程序来激活 Java虚拟机
?Java Applet( Java小应用程序) 。其是通过
浏览器来激活 Java虚拟机
?它们都是在 Java虚拟机中执行
Java Application
? 在 Java语言中,每个应用程序都是以类的形式出现
的。一个程序中既可以只包含一个类,也可以包含
多个类,此时称为是一个多类程序。
? Java提供了一个特殊的方法 ——main ( )方法,每个
应用程序的执行都是从主方法 main ( )开始的,没有
main ( )方法的应用程序是不能执行的。
? 包含了 main ( )方法的类叫做主类,程序的主文件名
必须与主类相同
一个问候程序
该程序的功能是在屏幕上显示一个问候,
Hello,World!
问候程序 Java代码
? class HelloWorld
? {
? public static void main (String Args [ ])
? {
? System.out.println (“Hello,World!”);
? }
? }
main()方法
? main()方法是 Java Application程序的入口,有着固定的书写格式,
? public static void main (String args[ ])
? {
? …
? }
? 其中,
? · public表明所有的类都可以使用这一方法;
? · static指明该方法是一个静态方法,可以通过类名来直接调用;
? · void则表示 main()方法不返回任何值;
? · main(String args[ ])是该方法的头部,圆括号内是该方法可接受的参数。
?Java解释器总是从 main()方法开始解释和执
行应用程序,因此一个可执行的 Application
必须而且只能有一个 main ()方法
?本例中只有一条语句,System.out.println
("Hello,World!" );其中,System是一个系统
类,System.out 指代了标准输出流,通过它
的 println()方法可以往标准输出设备上输出
数据
Java Applet
import java.applet.Applet; // 将 java.applet包中的系统类 Applet
引入本程序
import java.awt.Graphics; // 将 java.awt包中的系统类 Graphics
引入本程序
public class Hello_Applet extends Applet
{
public void Paint (Graphics g )
{
g.drawString (“Hello wold!),50,25);
}
}













关键字表示引 入系统类
import
?关键词 import用于将系统类引入本程序
?本例中引入了两个系统类 ——Applet和
Graphics。这两个系统类分别位于不同的系
统包 java.applet和 java.awt中
?引用一个系统类时需要指明它们所在的包名
类的声明
? Applet与 Application在结构上是有较大不同的,最
主要体现在 Applet中没有 main()方法
? 一般来说,Applet中的类必须是公共的(用 public来
修饰)或有一个 public型的构造方法,而且必须有
一个类是系统类 Applet的子类
? 所谓一个类是另一个类的子类,就是说一个类继承
了另一个类,两个类之间存在继承关系。
类的派生
Applet
Hello_Applet

子类
父类
Java Applet程序
?Java Applet不像 Java Application那样是一个
独立的程序,它虽然也要先经过半编译生成
字节码文件,但是这个字节码文件不能够直
接被执行和使用。按照约定,它必须由支持
Java的 WWW浏览器(如 IE,Netscape、
Hotjava等)或 appletviewer加载执行
Applet运行的完整过程
源代码 ( *.java文件) 字节码 ( *.class)文件 Java编译器
HTML文件


Applet嵌入标记


WWW服务器
② 下载 HTML文件
① 请求 HTML文件
WWW浏览器
③ 请求 Applet字节码
④ 下载 Applet字节码
⑤ 解释执行 Applet字节码
Java程序开发环境 ——SDK
?工欲善其事,必先利其器。为了支持用户的
Java程序开发
?但是,SUN公司开发的 Java 2 SDK( Java 2
Software Development Kit)比较适合初学者
使用
SDK集成有如下一些功能
? Java编译器;
? Java解释器,
内附 Appletviewer——Applet Bytecode解释器;
内附 Java——Application解释器。
? 简单的除错工具。
1.2 Java程序开发过程
?1 Java应用程序开发过程举例
?2 Java Applet开发过程举例
程序开发过程
Java应用程序开发过程举例
? 编辑 ——创建 Java源程序,源程序用 Java编程语言直
接编写的程序,通常是由一个或多个类组成的正文
文件,后缀为,java
? 半编译 ——用 Java编译器( Javac)将 Java源程序
翻译成 Java虚拟机 (the Java Virtual Machine,简
称 Java VM)能理解的指令、再将这些指令组织为字
节码文件将源程序编译为字节码文件(后缀
为,class)的过程
? 半解释(运行) ——Java虚拟机( Java)解释、运
行包含在字节码文件中的程序
创建源文件
保存过程
? 输入完毕,检查无错后,应将这些代码保存到一
个文件中。 Java规定,Java应用程序源代码后缀
名必须为,java
半编译
?在 JDK中,Java的编译器是 javac.exe。使用
javac命令,就可以将 Java源文件编译成字节

?javac命令的一般格式为,
javac <文件名 >.java
path路径设置
?path环境变量应指定操作系统到什么地方去
查找 Java工具,并可以将当前所用机器的
Java工具所在的路径(一般在 JDK文件夹下
的 BIN子文件夹中)赋给 path环境变量。例如,
?path= %path%;c:\JDK1.2.2\BIN
半解释 ——运行
?编译生成的字节码文件可以在本机中由 java
解释器 ——java.exe运行。 java命令的一般格
式为,
java 文件名
classpath环境变量
?classpath环境变量指定 Java工具到什么地方
去查找类文件(,class文件)。系统提供的类
文件相关信息一般在 JDK文件夹下的 LIB子文
件夹中,然后还需将用户自己的类文件所在
文件夹赋给 classpath环境变量。例如,
set classpath=c:\jdk1.2.2\lib\.;d:\javaprogram
HelloWorld程序的编译、运行过程
向应用程序传递参数
? Java应用程序通常是在命令行下运行的,允许用户
在这个命令行中向它传递信息,运行时向程序传送
数据,增加了该程序的通用性
?假设用下面的命令来运行程序,
?java WhoSayWhat Marry "Good Day! "
?那么程序的运行结果为,
?Marry say,Good Day!
Java Applet开发过程举例
?Java Applet的创建过程也是分为三步:编辑、
编译和运行,其前两个步骤与 Application大
致相同。
?但由于 Applet是不独立的小应用程序,所以
不能直接用 java命令来执行第二步生成的字
节码文件,而是应该另外创建一个可以嵌入
该 Applet字节码的 HTML文件,然后由支持
Java的 WWW浏览器或 appletviewer来加载执
行。
创建源文件
半编译
?用 Java编译器来进行源文件的编译,格式如
下,
javac Hello_Applet.java
?结果也是在当前文件夹下产生字节码文件
Hello_Applet.class
创建 HTML文件
?Applet是不独立的程序,不能够直接被执行
和使用,必须由支持 Java的 WWW浏览器或
appletviewer加载执行。
?在执行小应用程序之前,必须先准备一个供
其栖身的 HTML文件,使用特殊的 HTML标记,
把 Applet嵌入其中
HTML标记形式
?<applet code="……" width=……
height=……>
?……
?</applet>
?其中,<applet>和 </applet>说明在此插入一
个 Applet,字节码文件的名字放在,code=”
后(扩展名,class,必不可少!),而 width
和 height参数说明了此 Applet占用的宽度和高

Hello.html文件
运行
?Appletviewer程序可以在 JDK的 bin文件夹下
找到,用它可以浏览嵌有 Applet的 HTML文件。
appletviewer.exe的一般格式为,
?appletviewer <文件名 >.html
?在 MS-DOS平台上,要浏览本例,只需输入
命令,
appletviewer Hello.html
运行结果