第 一 部 分 Java入 门
第 一 章 Java概 述 (续 )
刘波 李京华 丁锂 王克宏
§ 1.3.简 单 的 Java程 序
下 面 我 们 先 介 绍 两 个 简 单 的 Java程 序 ,并 对 其 进 行 分 析 。
例 1.1.
public class HelloWorldApp { //an application
public static void main (String args[ ]){
System.out.println("Hello World!");
}
}
本 程 序 的 作 用 是 输 出 下 面 一 行 信 息 :
Hello World!
程 序 中 ,首 先 用 保 留 字 class来 声 明 一 个 新 的 类 ,其 类 名 为
Hell oWorldApp,它 是 一 个 公 共 类 (public)。 整 个 类 定 义 由 大 括 号 {}
括 起 来 。 在 该 类 中 定 义 了 一 个 main ()方 法 ,其 中 public表 示 访 问
权 限 ,指 明 所 有 的 类 都 可 以 使 用 这 一 方 法; static指 明 该 方 法 是
一 个 类 方 法 ,它 可 以 通 过 类 名 直 接 调 用 ;void则 指 明 main()方 法 不
返 回 任 何 值 。 对 于 一 个 应 用 程 序 来 说 ,main()方 法 是 必 需 的 ,而
且 必 须 按 照 如 上 的 格 式 来 定 义 。 Jave解 释 器 在 没 有 生 成 任 何
实 例 的 情 况 下 ,以 main()作 为 入 口 来 执 行 程 序 。 Jave程 序 中 可 以
定 义 多 个 类 ,每 个 类 中 可 以 定 义 多 个 方 法 ,但 是 最 多 只 能 有 一
个 公 共 类, main()方 法 也 只 能 有 一 个, 作 为 程 序 的 入 口 。 main()方
法 定 义 中 ,括 号 ()中 的 String args[ ]是 传 递 给 main()方 法 的 参 数,参
数 名 为 args,它 是 类 String的 一 个 实 例 ,参 数 可 以 为 0个 或 多 个,每
个 参 数 用 "类 名 参 数 名 "来 指 定 , 多 个 参 数 间 用 逗 号 分 隔 。 在
main()方 法 的 实 现 (大 括 号 中 ),只 有 一 条 语 句 :
System.out.println ("Hello World!");
它 用 来 实 现 字 符 串 的 输 出 ,这 条 语 句 实 现 与 C语 言 中 的
printf 语 句 和 C++中 cout<<语 句 相 同 的 功 能 。 另 外 ,//后 的 内 容 为
注 释 。
现 在 我 们 可 以 运 行 该 程 序 。 首 先 把 它 放 到 一 个 名 为
HelloWor ldApp.java的 文 件 中 , 这 里 ,文 件 名 应 和 类 名 相 同 ,因 为
Java解 释 器 要 求 公 共 类 必 须 放 在 与 其 同 名 的 文 件 中。 然 后 对
它 进 行 编 译 :
C:\>javac HelloWorldApp.java
编 译 的 结 果 是 生 成 字 节 码 文 件 HelloWorldApp.class。 最 后 用
java 解 释 器 来 运 行 该 字 节 码 文 件 :
C:\>java HelloWorldApp
结 果 在 屏 幕 上 显 示 Hello World!
我 们 再 来 看 下 面 的 一 个 例 子 :
例 1.2
import java.awr.*;
import java.applet.*;
public class HelloWorldApplet extends Applet { //an applet
public void paint(Graphics g){
g.drawString ("Hello World!",20,20);
}
}
这 是 一 个 简 单 的 Applet(小 应 用 程 序 )。 程 序 中 ,首 先 用
import语 句 输 入 java.awr和java.applet下 所 有 的 包 ,使 得 该 程 序 可 能
使 用 这 些 包 中 所 定 义 的 类 , 它 类 似 于 C中 的 #include语 句 。 然 后
声 明 一 个 公 共 类 HelloWorldApplet,用 extends指 明 它 是 Applet的 子 类 。
在 类 中 ,我 们 重 写 父 类 Ap-plet的 paint()方 法 ,其 中 参 数 g为 Graphics
类 ,它 表 明 当 前 作 画 的 上 下 文 。 在 paint()方 法 中 ,调 用 g的 方 法
drawString(),在 坐 标 (20,20)处 输 出 字 符 串 ""Hello World!", 其 中 坐 标
是 用 象 素 点 来 表 示 的 。
这 个 程 序 中 没 有 实 现 main()方 法 ,这 是 Applet与 应 用 程 序
Applica tion(如 例 1)的 区 别 之 一 。 为 了 运 行 该 程 序 ,首 先 我 们 也
要 把 它 放 在 文 件 HelloWorldAppl et.java中 ,然 后 对 它 进 行 编 译 :
C:\>javac HelloWorldApplet.java
得 到 字 节 码 文 件 HelloWorldApplet.class。 由 于 Applet中 没 有
main()方 法 作 为 Java解 释 器 的 入 口 ,我 们 必 须 编 写 HTML文 件 ,把 该
Applet嵌 入 其 中 ,然 后 用 appletviewer来 运 行 ,或 在 支 持 Java的 浏 览 器
上 运 行 。 它 的 <HTML>文 件 如 下 :
<HTML>
<HEAD>
<TITLE> An Applet </TITLE>
</HEAD>
<BODY>
<applet code="HelloWorldApplet.class" width=200 height=40>
</applet>
</BODY>
</HTML>
其 中 用 <applet>标 记 来 启 动 HelloWorldApplet,code指 明 字 节 码
所 在 的 文 件 ,width和height指 明 applet所 占 的 大 小 ,我 们 把 这 个 HTML
文 件 存 入 Example.html,然 后 运 行 :
C:\>appleviewer Example.html
这 时 屏 幕 上 弹 出 一 个 窗 口 ,其 中 显 示 Hello World!,显 示 结 果
如 图 :
从 上 述 例 子 中 可 以 看 出 ,Java程 序 是 由 类 构 成 的 ,对 于 一 个
应 用 程 序 来 说 ,必 须 有 一 个 类 中 定 义 main()方 法 ,而 对 applet来 说 ,
它 必 须 作 为 Applet的 一 个 子 类 。 在 类 的 定 义 中 ,应 包 含 类 变 量 的
声 明 和 类 中 方 法 的 实 现 。 Java在 基 本 数 据 类 型 、 运 算 符 、 表
达 式 、 控 制 语 句 等 方 面 与 C、 C++基 本 上 是 相 同 的 ,但 它 同 时 也
增 加 了 一 些 新 的 内 容 ,在 以 后 的 各 章 中 ,我 们 会 详 细 介 绍 。 本
节 中 ,只 是 使 大 家 对 Java程 序 有 一 个 初 步 的 了 解 。
第 二 章 数 据 类 型
§ 2.1数 据 类 型
数 据 类 型 指 明 了 变 量 或 表 达 式 的 状 态 和 行 为 。 Java的 数
据 类 型 如 下 所 示 :
Java不 支 持 C、 C++中 的 指 针 类 型、结 构 体 类 型 和 共 用 体 类 型。
本 章 我 们 主 要 介 绍 简 单 类 型 。
§ 2.2常 量 与 变 量
一 、 常 量
Java中 的 常 量 值 是 用 文 字 串 表 示 的 ,它 区 分 为 不 同 的 类 型
,如 整 型 常 量 123,实 型 常 量 1.23,字 符 常 量 ‘ a’ ,布 尔 常 量 true、
false以 及 字 符 串 常 量 "This is a constant string."。
与 C、 C++不 同 ,Java中 不 能 通 过 #define命 令 把 一 个 标 识 符 定
义 为 常 量 ,而 是 用 关 键 字 final来 实 现 ,如 final double PI=3.14159( 有
关 final的 用 法 见 [6.2.3])。
二 、 变 量
变 量 是 Java程 序 中 的 基 本 存 储 单 元 ,它 的 定 义 包 括 变 量 名
、 变 量 类 型 和 作 用 域 几 个 部 分 。
① 变 量 名 是 一 个 合 法 的 标 识 符 ,它 是 字 母 、 数 字 、 下 划
线 或 美 元 符 "$ "的 序 列 ,Java对 变 量 名 区 分 大 小 写 ,变 量 名 不 能
以 数 字 开 头 ,而 且 不 能 为 保 留 字 。 合 法 的 变 量 名 如 :myName、
value-1、 dollar$ 等 。 非 法 的 变 量 名 如 :2mail、 room#、 class (保 留
字 )等 ,变 量 名 应 具 有 一 定 的 含 义 ,以 增 加 程 序 的 可 读 性 。
② 变 量 类 型 可 以 为 上 面 所 说 的 任 意 一 种 数 据 类 型 。
③ 变 量 的 作 用 域 指 明 可 访 问 该 变 量 的 一 段 代 码 。 声 明 一
个 变 量 的 同 时 也 就 指 明 了 变 量 的 作 用 域 。 按 作 用 域 来 分 ,变 量
可 以 有 下 面 几 种 :局 部 变 量 、 类 变 量 、方 法 参 数 、 例 外 处 理 参
数 。 局 部 变 量 在 方 法 或 方 法 的 一 块 代 码 中 声 明 ,它 的 作 用 域
为 它 所 在 的 代 码 块 (整 个 方 法 或 方 法 中 的 某 块 代 码 )。
类 变 量 在 类 中 声 明 ,而 不 是 在 类 的 某 个 方 法 中 声 明 ,它 的
作 用 域 是 整 个 类 。
方 法 参 数 传 递 给 方 法 ,它 的 作 用 域 就 是 这 个 方 法 。
例 外 处 理 参 数 传 递 给 例 外 处 理 代 码 ,它 的 作 用 域 就 是 例
外 处 理 部 分 。
在 一 个 确 定 的 域 中 ,变 量 名 应 该 是 唯 一 的 。 通 常 ,一 个 域
用 大 括 号 {}来 划 定 。
有 关 类 变 量 、 参 数 传 递 以 及 例 外 处 理 将 分 别 在 [6.7.1]、
[6.2 .4]和 第 八 章 中 讲 述。
④ 变 量 的 声 明 格 式 为 :
type identifier[=value][,identifier[=value]… ];
例 如 : int a, b, c;
double d1, d2=0.0;
其 中 ,多 个 变 量 间 用 逗 号 隔 开 ,d2=0.0对 实 型 变 量 d2赋 初 值
0.0, 只 有 局 部 变 量 和 类 变 量 是 可 以 这 样 赋 初 值 的 ,而 方 法 参 数
和 例 外 处 理 参 数 的 变 量 值 是 由 调 用 者 给 出 的 。
§ 2.3整 型 数 据
一 、 整 型 常 量 :
与 C,C++相 同 ,Java的 整 常 数 有 三 种 形 式 :
① 十 进 制 整 数 ,如 123,-456,0
② 八 进 制 整 数 ,以 0开 头 ,如 0123表 示 十 进 制 数 83,-011表 示 十
进 制 数 -9。
③ 十 六 进 制 整 数 ,以 0x或 0X开 头 ,如 0x123表 示 十 进 制 数
291,-0X12 表 示 十 进 制 数 -18。
整 型 常 量 在 机 器 中 占 32位 ,具 有 int型 的 值 ,对 于 long型 值 ,则
要 在 数 字 后 加 L或 l,如 123L表 示 一 个 长 整 数 ,它 在 机 器 中 占 64位 。
二 、 整 型 变 量 :
整 型 变 量 的 类 型 有 byte、 short、 int、 long四 种 。 下 表 列 出
各 类 型 所 在 内 存 的 位 数 和 其 表 示 范 围 。
(未 完 待 续 )
回主页教程 上一篇 下一篇
|