Java应用程序北京理工大学计算机系 金旭亮第二讲
2009-7-29 北京理工大学计算机系 (共 55页 ) 2
本讲主要内容
Java程序的基础知识
简单 Java应用程序的开发方法
Java Applet的开发方法第一部分 Java应用程序用程序实例来学习语法是最好的方法
2009-7-29 北京理工大学计算机系 (共 55页 ) 4
第一个 Java应用程序
Welcome1.java
2009-7-29 北京理工大学计算机系 (共 55页 ) 5
单行注释,//
程序执行时会忽略所有的注释
注释用于说明程序开发者的意图,不是语法说明!
注释可以提高程序可读性
多行注释,/*,.,*/
/* This is a multiple
line comment,It can
be split over many lines */
Java中的注释
2009-7-29 北京理工大学计算机系 (共 55页 ) 6
使程序更可读
空行,空格和 tab被称为,空白符( white-
space characters),,会被编译器所忽略
程序中的空行,一般用于给功能代码分组,
这是一个良好的写代码的习惯空白行
3
2009-7-29 北京理工大学计算机系 (共 55页 ) 7
Java注释
结束方法定义
11 } // end method main
13 } // end class Welcome1
–结束类定义
–在大括号后可以加入注释以表明哪个语句块的结束
–记住:编译器忽略空白符
–注释可以跟在一行代码的后面
–注释也可以插在语句中间,最常见的就是对函数参数的注释(现场举例)
2009-7-29 北京理工大学计算机系 (共 55页 ) 8
语句
所有的语句以 ;结束
一个单独的语句可以被分为多行,多敲回车避免一行语句过长
不能在一个标识符中间或字串内部断开一个语句
2009-7-29 北京理工大学计算机系 (共 55页 ) 9

4 public class Welcome1 {
–开始定义类 Welcome1
每一个 Java程序至少有一个用户自定义的类
关键字,专供 Java本身使用的词
–关键字 class后紧跟类名
类名规范,每个单词的首字母大写,例如:
–SampleClassName
–请遵循通用的命名规范。 I,j,k,a,b,c之类简单变量少用为佳。
2009-7-29 北京理工大学计算机系 (共 55页 ) 10

类名被称为标识符( identifier)
可以由字母,数字,下划线 ( _ ) 和 $ 构成
不允许以数字开头,没有空格
示例,Welcome1,$value,_value,button7
7button是无效的标识符
注:尽量不要用 $打头,在 Java中,$一般用于标识内部类文件
Java标识符是大小写敏感的
a1和 A1 是不同的
public 关键字将在以后介绍
4 public class Welcome1 {
2009-7-29 北京理工大学计算机系 (共 55页 ) 11

类源文件
源文件名 =类名 +,java
本例源文件名为,Welcome1.java
注意,如果一个类被声明为 Public,则它本身所在的源文件名也必须与类名相同,连大小写都不能错!
(解释原因)
左大括号 {开始类的主体代码,右大括号 }结束类本身
2009-7-29 北京理工大学计算机系 (共 55页 ) 12
程序的逐行解析
Main函数必须严格象上面那样声明
方法用于完成某个任务并返回结果信息
void 表明 main 方法不返回任何结果
现在,忽视 main方法的其它关键字
7 public static void main( String args[] )
8 {
–开始方法定义
由 }结束 (第 11行 )
2009-7-29 北京理工大学计算机系 (共 55页 ) 13
程序入口点,main函数
程序从 main 函数处开始执行
main 是一个方法
一个 Java应用程序可以包含一个或多个方法
每一个 Java 应用程序( application)的必备部分
7 public static void main( String args[] )
实用技巧,
面对一个有着许多源文件的 Java程序,如何开始阅读并理解它?
2009-7-29 北京理工大学计算机系 (共 55页 ) 14
输出语句
命令计算机执行一个指令
打印一个字串
字串 – 由双引号包围的一系列字符
字串中的空白符会被编译器保留下来。
System.out
标准输出对象
在 MS-DOS 窗口中输出内容
System.out.println
显示一行文本
括号中是参数
这一行被称为语句
语句必须用( ;)结束
9 System.out.println( "Welcome to Java Programming!" );
2009-7-29 北京理工大学计算机系 (共 55页 ) 15
编译执行
编译一个程序
打开一个 DOS窗口,进入源文件所在的文件夹
输入,javac Welcome1.java
如果没有错误,生成 Welcome1.class
此文件中为字节码
Java 解释器( interpreter)可以解释此字节码
2009-7-29 北京理工大学计算机系 (共 55页 ) 16
编译执行
执行
输入,java Welcome1
解释器装入类 Welcome1的,class 文件:
扩展名,class必须省略
解释器调用方法 main()
2009-7-29 北京理工大学计算机系 (共 55页 ) 17
修改程序以实现多行显示
更改程序
书写代码
再改程序
9 System.out.println( "Welcome to " );
10 System.out.println( "Java Programming!" );
–结果以两行显示文本
–源文件,Welcome2.java
2009-7-29 北京理工大学计算机系 (共 55页 ) 18
应用格式控制符分行显示
System.out.print 和 System.out.println
可 接收一些特殊的字符
格式控制符
以反斜框引导 ( \ )
代表特殊的字符
换行符 (\n)
\n表明将光标移到下一行
2009-7-29 北京理工大学计算机系 (共 55页 ) 19
常用格式控制符转义字符 字符 转义字符 字符
\\ 反斜杠 \f 换页
\b 退格 \t 横向跳格
\r 回车 \n 换行
\ 继续 \DDD 八进制字符
\,双引号 \‘ 单引号
\nHHHH Unicode字符
2009-7-29 北京理工大学计算机系 (共 55页 ) 20
上机实践
使用 JCreator创建示例一源程序
(welcome1.java)
使用 JDK在 DOS窗口下编译并运行示例一
2009-7-29 北京理工大学计算机系 (共 55页 ) 21
从示例 1中,我们学到 …
Java程序的基本组成单位是类
类中有方法
main()是程序入口点
要养成良好的编程习惯
2009-7-29 北京理工大学计算机系 (共 55页 ) 22
实践技巧:反编译
使用 JAD工具反编译 Java字节码
jad –s java Welcome1.class
2009-7-29 北京理工大学计算机系 (共 55页 ) 23
示例二:在一个对话框中显示文本
源文件,Welcome4.java
显示:
大多数 Java应用程序使用窗口或对话框
JOptionPane类允许我们使用对话框
运行结果:
2009-7-29 北京理工大学计算机系 (共 55页 ) 24

包( Package):
包含了一些预制类可供使用
相关的类被放在一起,称为包( packages)
所有的包被称为 Java类库或 Java应用程序编程接口
(Java API)
JOptionPane 在包 javax.swing 中
此包中有一些可用于图形界面 Graphical User
Interfaces (GUIs)设计的类
2009-7-29 北京理工大学计算机系 (共 55页 ) 25
Java API中的两种包
核心包( Core packages)
以 java开头
由 J2SDK( Java 2 Software Development Kit)所提供
扩展包( Extension packages)
以 javax开头
是新创建的包
2009-7-29 北京理工大学计算机系 (共 55页 ) 26
使用包
import 语句编译器用来识别和定位 Java程序中用到的类 告诉编译器在
javax.swing 包中装入类 JOptionPane
5 import javax.swing.JOptionPane;
2009-7-29 北京理工大学计算机系 (共 55页 ) 27
使用对话框
调用类 JOptionPane的 showMessageDialog方法
需要两个参数
每个参数间以 (,)间隔
到目前为止,第一个参数总是 null
第二个参数是要显示的字串
注意,方法名开头字母小写,与类名的要求相反。
showMessageDialog是一个静态 static方法
静态方法用 类名,方法名(参数列表) 的形式调用
JOptionPane.showMessageDialog(
null,"Welcome\nto\nJava\nProgramming!" );
2009-7-29 北京理工大学计算机系 (共 55页 ) 28
提前学习
什么是静态方法?
思索:
为什么 main()方法必须是静态的?
无须创建对象即可使用的方法。
2009-7-29 北京理工大学计算机系 (共 55页 ) 29
结束应用程序
调用静态类 System的静态方法 exit
结束程序
可用于任何有图形界面的程序
因为是静态方法,需要类名和 (.)
第一字符大写的标识行( Identifiers)一般是类名
参数 0 表明程序顺利结束
非 0表示有错误发生
类 System属于包 java.lang
不需要 import 语句
java.lang包自动被每个 Java程序所引入
15 System.exit( 0 );
2009-7-29 北京理工大学计算机系 (共 55页 ) 30
上机实践(二)
上机编写并运行 welcome4.java
修改程序,显示自定义的信息
2009-7-29 北京理工大学计算机系 (共 55页 ) 31
第二部分 Java Applets
进入无比广阔的互联网世界
2009-7-29 北京理工大学计算机系 (共 55页 ) 32
介绍
什么是 Applet?
1,Applet是运行于浏览器中的 Java程序。
2,它可以把浏览器变成是象一个
Windows窗体。
2009-7-29 北京理工大学计算机系 (共 55页 ) 33
介绍
Applet
运行于以下环境中:
appletviewer (applets的测试软件 )
Web 浏览器 (IE,Communicator)
当一个包含了 applet的 HTML (Hypertext
Markup Language) 文档被下载并打开时会自动运行
2009-7-29 北京理工大学计算机系 (共 55页 ) 34
观看 J2SDK中的示例
Applets示例
在 J2SDK中提供
包含源代码 (.java 文件 )
可以通过学习这些代码来掌握 Java新的特性
所有的程序员都是从模仿已有的程序开始的
在 J2SDK的 demo目录中
2009-7-29 北京理工大学计算机系 (共 55页 ) 35
The TicTacToe Applet
运行 applets
在命令窗口中,进到相应的子目录中
cd c:\j2sdk1.4.0\demo\applets
cdapplet目录名
有一个 HTML file用于执行 applet
键入 appletviewer 网页名,html
appletviewer 装入此网页
从网页中决定装入哪个 applet运行
2009-7-29 北京理工大学计算机系 (共 55页 ) 36
Applet示例
The TicTacToe Applet
2009-7-29 北京理工大学计算机系 (共 55页 ) 37
Applet示例
The DrawTest Applet
2009-7-29 北京理工大学计算机系 (共 55页 ) 38
The Java2D Applet
Applet示例
2009-7-29 北京理工大学计算机系 (共 55页 ) 39
课后练习
请同学从 J2SDK所提供的 Demo中,选择另外的一个 Applet运行
请学有余力的同学自学相关的源代码
2009-7-29 北京理工大学计算机系 (共 55页 ) 40
一个 Applet示例,输出一字串
现在,创建我们自己的 applets
目的
创建一个 applet 显示
"Welcome to Java Programming!“
源文件:
WelcomeApplet.java
WelcomeApplet.html
运行结果
2009-7-29 北京理工大学计算机系 (共 55页 ) 42
引入 Applet的支持包
5 import java.awt.Graphics; // import class Graphics
8 import javax.swing.JApplet; // import class JApplet
–输入包中预定义的类
import语句让编译器知道到哪儿去装载类
要创建 applets,要引入 JApplet类 (在包
javax.swing中 )
导入 Graphics 类 (在包 java.awt中 ) 绘图
–可以画线、矩形、椭园、字串等
Import语句指定了目录结构
2009-7-29 北京理工大学计算机系 (共 55页 ) 43
Java Applet中的类
Applets至少拥有一个类
很少从头创建一个类
通常从己有的类进行派生
public class WelcomeApplet extends JApplet {
–开始定义类 WelcomeApplet
–extends 后紧跟类名
说明此类继承自 JApplet
–JApplet,基类
–WelcomeApplet,子类
WelcomeApplet现在拥有了 Japplet的方法与数据
2009-7-29 北京理工大学计算机系 (共 55页 ) 44
JApplet类
JApplet类
由 Java开发都创建的实现了 applet基本功能的类
Applets需要超过 200种方法 !
extends JApplet
通过继承,我们不再需要定义这 200种方法
我们也不需要了解 Japplet类中的每个细节
10 public class WelcomeApplet extends JApplet {
2009-7-29 北京理工大学计算机系 (共 55页 ) 45
类与类的对象
WelcomeApplet 仅是一个框架
Appletviewer或 浏览器创建了
WelcomeApplet类的一个对象
public 是必需的
一个文件只能有一个 public类
public 类名必须是文件名
public class WelcomeApplet extends JApplet {
2009-7-29 北京理工大学计算机系 (共 55页 ) 46
类的方法
我们的类从 JApplet 中继承了 paint方法
缺省情况下,paint 方法是空的
我们需要重定义 paint 方法
paint,init,和 start方法
会被自动调用
这三个方法都是空的
并非每个 applet都需要这三个方法
可根据需要重载需要的方法
Applet容器调用 paint方法,画出自己,
public void paint( Graphics g )
2009-7-29 北京理工大学计算机系 (共 55页 ) 47
Paint方法
Paint方法
13-21行是 paint方法的实体
在屏幕上绘图
void说明 paint方法在完成工作后不返回任何信息给调用者
括号中是参数列表 –方法通过参数从外界接收信息
Paint方法接收一个 Graphics对象
13 public void paint( Graphics g )
2009-7-29 北京理工大学计算机系 (共 55页 ) 48
调用基类同名方法
调用基类 Japplet的方法
每个 applet的 paint方法中第一句都必须是这句
16 super.paint( g );
2009-7-29 北京理工大学计算机系 (共 55页 ) 49
在 Applet中输出字串
调用 drawString 方法
参数列表:
第一个,要画出的字串
第二个,x 坐标
第三个,y 坐标
Java 坐标系统
以象素计量
左上角是 (0,0)
19 g.drawString( "Welcome to Java Programming!",25,25 );
2009-7-29 北京理工大学计算机系 (共 55页 ) 50
编译与执行的步骤
运行 Applet
编译
javac WelcomeApplet.java
无错则生成 WelcomeApplet.class
创建一个 HTML 文件
用 appletviewer或浏览器装入并运行此网页
2009-7-29 北京理工大学计算机系 (共 55页 ) 51
创建一个网页
WelcomeApplet.html源代码
一般与,class 文件在同一个位置
HTML 标记( tags)
配对使用
由 <开始,>结束
行 1和行 4 – 表明 HTML文档的开始和结束
行 2 – 由 <applet> 标记开始
指明此代码用到了一个 applet
指定了显示 applet 的范围:宽度和高度
行 3 –结束 <applet> 标记
1 <html>
2 <applet code = "WelcomeLines.class" width = "300" height = "40">
3 </applet>
4 </html>
2009-7-29 北京理工大学计算机系 (共 55页 ) 52
使用 appletviewer
appletviewer 只识别 <applet> 标记
忽略所有其它标记
被称为最小的浏览器
执行 applet
appletviewer WelcomeApplet.html
必须在包含,class文件中目录中执行这个命令
1 <html>
2 <applet code = "WelcomeLines.class" width = "300" height = "40">
3 </applet>
4 </html>
2009-7-29 北京理工大学计算机系 (共 55页 ) 53
更多的 Applets示例,输出字串和直线? 更多的 applets
第一个例子 (WelcomeApplet2.java)
显示两行字
使用 drawString 方法
第二个例子 (WelcomeLines.java)
g.drawLine(x1,y1,x2,y2 )
从点 (x1,y1)到 点 (x2,y2)画一条直线
用 drawLine在一个字串上方画两条直线实例运行结果
2009-7-29 北京理工大学计算机系 (共 55页 ) 55
课后练习
自行用 JCreator上机验证本讲中的所有例题,
掌握创建 Java应用程序与 Java Applet的步骤。