JavaScript
Java语言概述
? 1990 年 Sun 公司的 James Gosling等人开
始开发名称为 Oak 的语言。希望用于控制
嵌入在有线电视交换盒,PDA等的微处理
器。
? 1993 年交互式电视和 PDA 市场开始滑坡,
而 Internet 正处于增长时期,因此 Sun 公司
将目标市场转向 Internet 应用程序。
? 1994年将 Oak语言更名为 Java。
? 1995年 Sun 公司的 HotJava 浏览器问世。
什么是 JAVA
? Java 完全面向对象的编程语言 。
? Java 可用来生成两类程序:应用程序, 小
应用程序 ( Applet ) 。
? Java 既是一种解释执行的语言, 也是一种
编译执行的语言 。
Java 程序的运行环境
? Java虚拟机是一种利用软件方法实现的抽
象化的计算机,基于下层的操作系统和硬
件平台,可以在上面执行 Java的字节码程
序。
? Java虚拟机 将在内部创建一个运行时系统,
帮助以下列方式执行代码:
– 加载,class 文件
– 管理内存
– 执行垃圾收集
Java虚拟机
? 由于硬件平台不一致,因此 Java虚拟机使
用了堆栈帧的概念,用来存放下列信息:
– 表示方法状态的帧
– 字节码操作数
– 传递给方法的参数
– 局部变量
实时编译器
? 使用“实时 (Just In Time)” 编译器,也称
为 JIT编译器。可以提高 Java 代码的执行
速度。
? SUN公司在 Java 2 发行版中提供了 JIT编译
器,JIT编译器是 Java虚拟机的一部分。
? JIT 的主要用途是将字节码指令集转换为针
对某一特定微处理器的机器代码指令。
Java 的编辑环境
? JDK是有助于程序员开发 Java 程序的 Java
开发工具包 包括:
– 类库
– 编译器
– 调试器
– Java 运行时环境( JRE )
JDK 提供的常用工具
? javac 是用来编译源代码的命令。
? java 是用于执行类文件的命令,而类文件
将在 Java 虚拟机中运行类。
? appletviewer 命令允许在万维网浏览器的环
境之外运行 Applet。
Java Application程序基本结构
import语句
class
{
public static void main(String[ ] args)
{
}
}
主类名称
方法体
第一个 Java 程序
//这是名称为, HelloWorld.java”的简单程序
import java.io.*;
class HelloWorld {
public static void main(String
args[ ])
{
System.out.println(“欢迎访问 Java 世界!
,);
}
}
注释
? Java 语言提供三种类型的注释:
- 单行注释
- 多行注释
- 文档注释
关键字 1
? 原始数据类型
- byte
- short
- int
- long
- float
- double
- char
- boolean
? 循环关键字
- do
- while
- for
- break
- continue
? 分支关键字
- if
- else
- switch
- case
- default
- break
? 方法、变量和类修饰符
- private
- public
- protected
- final
- static
- abstract
- synchronized
- volatile
- strictfp
关键字 2
? 异常处理
- try
- catch
- finally
- throw
- throws
? 对象相关关键字
- new
- extends
- implements
- class
- instanceof
- this
- super
? 字面 值 常量
– false
– true
– null
? 方法相关关键字
– return
– void
? 包相关关键字
– package
– import
基本数据类型
? Java 共有八 种 基本数据类型:
- 四种整数类型 (byte,short,int,long)
- 两种浮点数类型 (float,double)
- 一种字符类型 (char)
- 一种布尔类型 (boolean)
整型数据类型
类型 缺省值 长度 数的范围
byte 0 8位 -128 ~ 127
short 0 16位 -32,768 ~ 32,767
int 0 32位 -2,147,483,648 ~ 2,147,483,647
long 0 64位 -9,223,372,036,854,775,808 ~
9,223,372,036,854,775,807
浮点型数据类型
类型 缺省值 长度 数的范围
float 0.0 32位 3.4E-038~3.4E+038
double 0.0 64位 1.7E-308~1.7E+308
字符数据类型
类型 缺省值 长度 数的范围
char '\u0000' 16位 \u0000 ~ \uFFFF
布尔数据类型
类型 缺省值 长度 数的范围
boolean false 1位 false,true
字符串
? 创建一个 String 类的实例:
String strName1 =,Humpty dumpty”; //字符串字面量
String strName2 = new String("Egg");
? 两个或多个字符串可以用,+”运算符合并起来。例如:
strName3 = strName1+ " is the name of an " +
strName2;
? 字符串的长度可以通过 String 类中的函数计算。例如:
int numLength = strName2.length();
? 也可将数字添加到字符串类型中。例如:
String strVar = "Mark" + 1;
变量
? 变量是在程序执行期间可根据需要经常变
化的值
? 变量具有 3 个特性:
- 名称, 标识符
- 初始值,为其赋值或者是保留缺省值
- 作用域, 在不同程序块中的可用性及生命周期
算术 运算符
运算符 含义 示例 求值
+ 加 c = a + b
- 减 c = a - b
* 乘 c = a * b
/ 除 c = a / b
% 取模 c = a % b
++ 递增 a++
-- 递减 b--
+= 相加并赋值 c += a c = c + a
-= 相乘并赋值 c *= a c = c * a
/= 相除并赋值 c /= a c = c / a
%= 取模并赋值 c %= a c = c % a
- 取负数 c= - a
关系运算符
运算符 含义 示例
== 等于 a==b
!= 不等于 a!=b
> 大于 a>b
< 小于 a<b
>= 大于或等于 a>=b
<= 小于或等于 a<=b
逻辑运算符
运算符 含义 示例
& 逻辑与 A & B
| 逻辑或 A | B
^ 逻辑异或 A ^ B
! 逻辑反 ! A
|| 短路或 A || B
&& 短路与 A && B
位运算符
运算符 含义 示例
~ 按位非( NOT) b = ~a
& 按位与( AND) c = a & b
| 按位或( OR) c = a | b
^ 按位异或( XOR) c = a ^ b
>> 右移 b = a >> 2
>>> 右移,左边空出的位以 0填充 b = a >>> 2
<< 左移 b = a << 1
赋值运算符
? 一次可以为多个变量赋值,如:
int a = 20000;
int p,q,r,s;
p = q = r = s = a;
控制结构
? 选择
– if-else
– switch
? 循环
– while
– do-while
– for
? 跳转
– break
– continue
if-else 选择语句
? if (条件 )
? 语句 1;
? else
? 语句 2;
? if (条件 ) {
? 语句组;
? }
? else {
? 语句组;
? }
switch 选择语句
? switch(表达式 ){
? case '常量值 1',
? 语句 (组 );
? break;
? case '常量值 2',
? 语句 (组 );
? break;
? case '常量值 N',
? 语句 (组 );
? break;
? default,
? 语句 (组 );
? }
循环
? while 循环
while(条件 )
{ 语句组 ; }
? do-while循环
?do
?{ 语句组 ; }
? while(条件 );
? for 循环
for(变量初始化 ; 条件 ; 递增或递减变量的值 )
? {语句组 ; }
break 和 continue 语句
? break 语句在循环中用于立即从当前循环终
止控制。
? 遇到 break 语句时,将跳出当前循环。
? continue 语句则是从其调用处跳至循环的
开始处。
? continue 语句之后的语句将不再执行。
数组
? 属于复杂数据类型
? 由类型相同的元素组成的有顺序的数据集

? 数组是固定的不能扩展
? 可以存储基本数据类型或对象
? 通过数组名和下标可以访问各元素
Java语言中的类、对象和接口
? 一个类是一个原型或蓝图,一个完整的类
声明应具有以下的形式:
? [ modifiers ] class ClassName [ extends
SuperClassName ]
? [ implements InterfaceNames ] {
? 类体
? }
对象声明与使用
? 在 Java语言中,一个对象的创建是通过创建一个
类的实例(或者说实例化一个类)来实现的。一
个 Java对象的创建语句可以是下面的形式:
? Date today = new Date ( ) ;
? new运算符实例化一个类是通过为这个类的一个
新对象分配存储单元来实现的。 new运算符要求
一个单一的参数表指出该对象调用哪一个构造函
数进行初始化。
? 一个对象创建之后,就能用它完成一定的功能,
实现某些事情。
接口声明与使用
? 一个接口是一个方法定义(没有实现)和
常数值的集合。
? 定义接口,类似于定义一个新的类。一个
接口定义也包括两个部分:接口申明和接
口体:
? interfaceDeclaration {
? interfaceBody
? }
Java语言中的输入、输出流
Java语言的用户界面
? Java语言实现了一个跨平台的图形用户界面( GUI)工具
集,称为抽象窗口工具集( AWT),它包括 java.awt、
java.awt.image和 java.awt.peer 3个包。
? 1,AWT包( java.awt)提供基本的 GUI成份,AWT类库
提供了 8个基本的用户界面构件,包括按钮 (Button)、复选
框 (Checkbox)、选择框 (Choice)、标签 (Label)、列表框
(List)、滚动条 (Scrollbar)、文本行( TextField)和文本域
(TextArea)。
? 2,AWT图像包( java.awt.image)包含管理图像数据的
类和接口,设置颜色模式、颜色过滤、设置像素值以及屏
幕的攫取快照等。
? 3,AWT peer包( java.awt.peer)包含平台独立的 AWT构
件与平台相关的实现之间的连接的类和接口,诸如
Microsoft Windows控制等。
Java语言的多线程机制
? 线程( thread)是指进程中单一顺序的控制
流,又称为轻量级进程。一个程序可以同
时使用多个线程来完成不同的任务。从逻
辑的观点上来看,多线程意味着一个程序
的多行语句同时执行。
Java语言中的异常处理
? 异常情况分为两个部分,Error和 Exception。
? Error类描述内部错误,运行时消耗系统的资源。
如果发生这样的错误,系统会通知用户并试图终
止程序。 Exception类分为两个分支:一类由
RuntimeException类衍生出;另一类则不是。区
别在于:发生 RuntimeException异常情况是一个
编程错误;而其他异常情况发生的原因是出现了
致命的错误,如 I/O错误等。
什么是 JavaScript
? <HTML>
? <HEAD>
? <TITLE> A JavaScript Example </TITLE>
? <SCRIPT LANGUAGE=“JavaScript”>
? var name=window.prompt(“Hello! What’s your name?”,,”);
? document.write(“HELLO”+name+“! I hope you like JavaScript!”);
? </SCRIPT>
? </HEAD>
? <BODY>
? </BODY>
? </HTML>
数据类型、常量和变量
? <HTML>
? <HEAD>
? <TITLE> A Data Type Example </TITLE>
? <SCRIPT LANGUAGE=“JavaScript”>
? var fruit= ’apples’;
? var numfruit= 12;
? numfruit = numfruit + 20;
? var temp =“There are”+numfruit+“”+fruit+“.”;
? document.write(temp);
? </SCRIPT>
? </HEAD>
? <BODY>
? </BODY>
运算符和表达式
? 赋值运算符:用等号“=”表示,将运算符右端操作数
的值赋予左端的操作数。
? ? 比较运算符:对两个操作数进行比较,并根据比较的结
果返回 true或 false。
? ? 算术运算符:用于加、减、乘、除、取模,++,--等操
作。
? ? 字符串运算符:“+”操作符用于字符串时,变为连接
运算符,作用是合并两个字符串。
? ? 逻辑运算符,JavaScript支持与、或、非逻辑运算。
? ? 位操作运算符:该类操作符支持对整数按位操作,这些
操作包括按位执行与、或和非操作。
条件语句
? 条件语句是让程序作出判断,并根据判断的结果执行指定的操作,在 JavaScript中通过 if…else 语句提供这种支持。该语句的语法为:
? if(condition) {
? statement for true condition}
? else {
? statement for false condition}
? 下面举一个例子:
? if(x==10) {
? document.write(“x is equal to 10,setting x=0.”);
? x=0;}
? else
? document.write(“x is not equal to 10”);
循环语句
? 循环语句提供了循环执行一段代码,直到一个表达式的计算结果为 true为止的能力。在 JavaScript中提供了两种循环语句。 for循环和
while循环。
? for循环将设置一个初始表达式 initExpr,然后循环执行一段 JavaScript
语句,直到条件表达式 condition计算结果为 true时停止。每循环一次,
都要计算表达式 incrExpr。该语句的语法为:
? for(initExpr;condition;incrExpr){
? //循环中执行的语句
? }
? while循环将一直执行一段代码,只要指定的条件 condition的计算结果
为 true。该语句的语法为:
? while(condition) {
? //循环中执行的语句
? }
函数
? JavaScript支持对函数的使用。函数可以有一个
或多个参数以及一个返回值。由于 JavaScript语
言是一个松散类型的语言,所以并不一定要为
JavaScript函数定义参数或返回值的类型,另外
函数可以是一个对象的属性,在这种情况下,它
的作用与该对象的方法相同。函数的语法格式为:
? Function fnName[param1][,param2]…[paraN]) {
? //function statement
? }
数组
? 在 JavaScript中,对数组没有显示支持,只是提供了一个
方法,允许建立自己的数组。这个方法是通过使用函数来
实现的,这个函数按照下面的方法初始化数组。
? Function InitArray(numElements) {
? This.length = numElements;
? For (var x=1; x<= numElements;x++) {
? This[x]=0}
? Return this;
? }
? 该函数将创建一个指定大小的数组,并将它初始化为 0,
该数组中第一个元素的值表示数组的长度。
事件
? JavaScript是一个事件驱动的语言。一个事件驱动的程序
可以对事件作出响应,如单击鼠标或加载一个文档事件。
一个事件可以引起执行一段代码(称为事件处理程序),
使得程序能够对事件作出正确的响应。
? 响应一个事件的程序称为事件处理程序,事件处理程序是
一个 HTML标签的属性:
? <tagName eventHandler=“JavaScript Code or
Function”>
? eventHandler的代码不一定是一个函数,它可以是由分号
分隔的 JavaScript语句,一般都是一个独立的函数,这样
程序结构清晰易读。
对象
? JavaScript是一种基于对象的语言,但不是一个
面向对象的语言,因为它不支持类和继承。在
JavaScript的对象层次结构中,后代对象通常是
父对象的属性。
? JavaScript中的对象具有属性、方法以及与它们
相关的事件处理程序。比如 Document对象有一个
title属性,该属性反映了该文档 <TITLE>标签定的
内容。 Link对象有两个事件处理程序,onClick和
onMouseMove。前者是当用鼠标单击链接对象的
时候被调用的,后者是当鼠标指针经过链接的时
候被调用的。
一个简单的 Java Applet
? 使用文本编辑器,建立一个 Java Applet源文件。
例如,建立一个名为 Hello.java 的文件如下:
? import java.applet.Applet;
? import java.awt.Graphics;
? public class Hello extends Applet
? { public void paint(Graphics g)
? { g.drawString("Welcome to JAVA!",50,25);
? }
? }
Applet类继承
? java.lang.Object
? |
? +----java.awt.Component
? |
? +----java.awt.Container
? |
? +----java.awt.Panel
? |
? +----
java.applet.Applet
HTML中的 <APPLET> 标记
? 在 HTML语言中扩充了一个称为 <APPLET> 的标
记,用来实现在互联网上引用 Java Applet小程序。
<APPLET>标记的格式解释如下。
? 1,CODE属性
? CODE指定所调用的小应用程序类文件的全称
(包括扩展名,class)。它的一般形式如下:
? <APPLET CODE=AppletSubclass.class
WIDTH=anInt HEIGHT=anInt>
? </APPLET>
Applet的生命周期
? Java Applet的生命周期包括 4个步骤:小程序初始化、小
程序开始运行、小程序停止运行和小程序撤销,这些过程
分别由上述的 4个方法来实现。下面是一个简单的 Java
Applet,它包含这 4个方法:
? public class Simple extends Applet {
? ……
? public void init() {……}
? public void start() {……}
? public void stop() {……}
? public void destroy() {……}
? ……
? }
Applet中实现绘画的方法
? 1,paint
? paint是基本的显示方法。许多小应用程序实现
paint方法,用于绘制一个浏览器页面内的 Applet
表示。
? 2,update
? update是可以和 paint一起用来改善绘制性能的一
种方法。
? 小应用程序从 Applet类继承它们的 paint和 update
方法,而 Applet类是从 AWT Component类继承来
的。
Applet中实现 UI构件的方法
? 小应用程序从 Component类继承一组事件
处理方法。所谓事件就是一系列具体的操
作。在 Component类中定义若干个处理具
体事件类型的方法,如鼠标事件
mouseDown和 handleEvent方法。
Applet中的线程
? 每个 Applet小程序都可以在多线程环境中运行。执行生命
周期4个方法( init,start,stop和 destroy)的那些线程
的运行取决于特定的 Applet应用程序。 Applet的绘制方法
(paint和 update)总是由 AWT绘制和事件处理线程调用执行
的。
? 不同的浏览器对在 Applet中的线程采用不同的执行方法。
有些浏览器为页面上的每个小应用程序分配一个线程,用
线程调用这个小应用程序生命周期的方法。有些浏览器为
每个小应用程序分配一组线程,这样很容易找到属于一个
具体的小应用程序的所有线程。不论采用哪种方法,都能
保证由一个小应用程序的任何生命周期方法创建的每一个
线程都属于同一个线程组。
建立一个图形用户接口 (GUI)
? Applet类是 AWT Panel类的子类,它继承了 AWT Panel中
的方法,所以大部分小应用程序有一个图形用户接口
(GUI)。根据一个小应用程序需要输入的信息类型或者需
要输出的信息格式,可以混合和匹配若干个 UI类型。小应
用程序既可以通过定义的参数从用户得到配置信息,也可
以通过读系统属性得到系统的信息。如果小应用程序要给
用户输出文本信息,可以使用 GUI,或者显示一个状态字
符串,或者显示到标准输出或标准错误流。
? Applet GUI具有以下的特殊性。
? 1.一个 Applet是一个 Panel
? 2,Applet只能出现在预先存在的浏览器窗口内
? 3,Applet的背景颜色可能会与页面的颜色不一致
设计 Applet参数
? 参数本身就是为了使应用程序具有灵活性
和使用方便而设置的。因此参数设计主要
就是要回答如何进行参数的设置、命名和
取值类型等问题,进一步确定哪些参数支
持建立 Applet用户接口
扩充 Applet超类
? 所有的小应用程序都继承 Applet类,Applet是所有小应用程序对象的
超类,因此,在创建自己的小应用程序时,惟一的方法是扩充 Applet
超类,实现自己程序的功能。在前面的例子中,创建过程用下面的代
码完成:
? import java.applet.Applet;
? public class AnimatorApplet extends Applet implements Runnable {
? int frameNumber = -1 ;
? int delay;
? Thread animatorThread;
? boolean frozen = false;
? ……
? }
用线程执行重复的任务
? 一般地,小应用程序在 start方法中创建重复
任务的线程。创建线程语句的具体位置应
放在使用户离开这个页面时,小应用程序
容易中止线程的地方。需要程序作的所有
工作是重载 stop方法,实现中止小应用程序
的线程。当程序执行完毕,用户返回到页
面时,start方法再次被调用,而且小应用程
序可再次创建一个线程执行重复的任务。
使用图像
? 在 Applet中经常要使用图像,当然动画中肯定要用到图像。本节介绍
在 Java Applet中如何使用图像,包括图像的装载和图像的显示。
? 1.装载图像
? 装载图像需要重载 Image。我们先介绍如何得到 Image对象。如果需
要装载的图像其数据格式是 GIF或 JPEG格式,同时还知道文件所在的
确切地址或 URL,就很容易得到 Image对象,因为仅仅需要使用
Applet或 Toolkit getImage方法即可。用 getImage方法可以立即返回
图像,而不需要检测图像数据是否存在。
? Applet类提供了两种 getImage方法:
? ( 1) public Image getImage(URL url)
? ( 2) public Image getImage(URL url,String name)
播放声音
? 在 Java中,利用 Applet实现声音的下载和播放
(以,au文件存放)是非常容易的。 Au文件是 Unix
操作系统中的一种声音文件格式,在 Windows中
也有几个针对 AU文件的播放程序,许多 WWW浏
览器也有针对 AU文件的帮助程序。
? Java Applet类和 AudioClip接口为播放声音提供了
基本支持。目前,Java API仅支持一种声音格式:
8位,8000 Hz,Sun“.au”文件。