Java 语 言 程 序 设 计 汤 一 平 等 编 著 北 京
内 容 简 介 本 书 基 于 Java 语 言 介 绍 面 向 对 象 的 程 序 设 计, 全 书 共 12 章, 介 绍 了 计 算 机 系 统 的 硬 件 与 软 件 Java 程 序 入 门 Java 编 程 面 向 对 象 的 编 程 技 术 基 础 Applets 和 Graphics 高 级 的 Java 编 程 功 能 面 向 对 象 的 高 级 编 程 技 术 图 形 化 用 户 界 面 的 编 程 技 术 异 常 和 输 入 / 输 出 流 Java 的 服 务 器 端 组 件 技 术 和 Java 语 言 的 应 用 实 例 HelkCFG 书 中 有 大 量 的 应 用 实 例, 通 过 本 书 的 学 习, 读 者 可 独 立 开 发 一 些 Java 小 程 序 本 书 可 以 作 为 计 算 机 通 信 等 信 息 类 专 业 本 科 生 的 教 材, 也 可 以 作 为 广 大 教 学 科 研 和 工 程 技 术 人 员 的 参 考 书 图 书 在 版 编 目 (CIP) 数 据 Java 语 言 程 序 设 计 / 汤 一 平 等 编 著. 北 京 : 科 学 出 版 社,2006. 1 ( 面 向 21 世 纪 高 等 院 校 计 算 机 系 列 规 划 教 材 ) ISBN 7-03-016727-9 Ⅰ.J Ⅱ. 汤 Ⅲ.JAVA 语 言 - 程 序 设 计 - 高 等 学 校 - 教 材 Ⅳ. TP312 中 国 版 本 图 书 馆 CIP 数 据 核 字 (2005) 第 157900 号 责 任 编 辑 : 吕 建 忠 李 伟 / 责 任 校 对 : 刘 彦 妮 责 任 印 制 : 吕 春 珉 / 封 面 设 计 : 飞 天 创 意 北 京 东 黄 城 根 北 街 16 号 邮 政 编 码 :100717 http :/ / ww w. science p. com 出 版 印 刷 科 学 出 版 社 发 行 各 地 新 华 书 店 经 销 * 2006 年 1 月 第 一 版 开 本 :787 1092 1 / 16 2006 年 1 月 第 一 次 印 刷 印 张 :20 印 数 :1 3000 字 数 :453 000 定 价 :26. 00 元 ( 如 有 印 装 质 量 问 题, 我 社 负 责 调 换 ) 销 售 部 电 话 010-62136131 编 辑 部 电 话 010-62138978 - 8001 (HI09)
前 言 1991 年, 为 了 开 发 一 种 面 向 家 用 电 器 并 能 够 在 家 用 电 子 产 品 上 进 行 交 互 式 操 作 的 软 件 产 品,Sun 公 司 组 织 了 一 批 优 秀 的 工 程 师, 成 立 了 一 个 名 为 Green 的 计 算 机 语 言 项 目 开 发 小 组, 开 发 了 用 于 网 络 的 精 巧 而 安 全 的 软 件 Oak, 它 就 是 Java 语 言 的 前 身 WWW 浏 览 器 的 出 现 使 得 Internet 的 表 现 力 及 魅 力 陡 增,Oak 语 言 被 定 位 于 WWW 浏 览 器 的 应 用 上 1995 年 1 月,Oak 升 级 到 新 的 版 本 并 改 名 为 Java 1995 年 春,Sun 公 司 公 布 了 Java 的 完 整 技 术 规 范, 立 即 得 到 包 括 Netscape 公 司 在 内 的 各 WWW 厂 商 的 广 泛 支 持 由 于 Java 语 言 具 有 与 环 境 无 关 跨 平 台 等 特 点, 这 对 整 个 计 算 机 产 业 产 生 了 深 远 的 影 响, 对 传 统 的 计 算 模 型 提 出 了 新 的 挑 战, 很 快 就 引 起 了 一 场 软 件 革 命 目 前,Java 提 供 3 个 方 面 的 应 用 : J2SE: 用 于 编 写 桌 面 / 工 作 站 应 用 程 序 其 最 新 版 本 J2SE 1. 5 为 企 业 及 客 户 端 应 用 程 序 开 发 提 供 了 更 高 的 性 能 和 更 好 的 Web 部 署 J2ME: 是 致 力 于 消 费 产 品 和 嵌 入 式 设 备 的 最 佳 解 决 方 案, 特 别 是 在 移 动 通 信 设 备 移 动 计 算 设 备 小 型 家 电 消 费 产 品 上 得 到 了 广 泛 的 应 用 J2EE: 是 前 沿 的 Java 技 术 平 台, 为 服 务 器 的 计 算 提 供 了 所 有 范 围 的 企 业 级 功 能 此 平 台 的 设 计 使 它 能 够 为 创 建 企 业 级 n 层 Java 应 用 程 序 提 供 集 成 Java 应 用 程 序 环 境 从 Java 所 提 供 的 3 个 方 面 的 应 用 来 看,Java 已 经 渗 透 到 我 们 生 活 的 方 方 面 面, 小 到 我 们 所 携 带 的 手 机, 大 到 航 空 航 天 装 备 正 像 Java 当 时 作 出 的 最 重 要 的 承 诺 一 样,Java 成 为 了 一 种 万 能 胶, 将 用 户 同 信 息 连 接 到 一 起, 无 论 这 些 信 息 来 自 Web 服 务 器 数 据 库 信 息 供 应 商, 还 是 能 够 想 像 到 的 其 他 任 何 一 种 信 息 源 由 于 Java 拥 有 坚 强 的 工 程 技 术 力 量 这 个 后 盾, 它 获 得 了 世 界 上 IT 厂 商 的 广 泛 支 持 其 内 建 的 安 全 及 保 密 特 性 可 同 时 满 足 软 件 工 程 师 程 序 员 和 最 终 用 户 在 这 方 面 的 需 求 而 且,Java 语 言 已 经 内 置 了 对 许 多 高 级 编 程 任 务, 如 网 络 编 程 数 据 库 连 接 3D 编 程 以 及 多 线 程 等 的 支 持 目 前 市 场 上 介 绍 Java 的 书 籍 非 常 多, 引 进 的 国 外 教 材 和 参 考 书 也 很 多, 但 是 从 教 与 学 的 角 度 来 审 视 这 些 书 籍 总 感 到 有 些 不 足, 笔 者 感 到, 在 我 国 高 等 院 校 关 于 计 算 机 科 学 与 技 术 教 育 的 计 算 机 语 言 类 教 材 方 面 还 是 很 有 潜 力 可 挖 的, 这 就 是 编 写 本 书 的 出 发 点 和 目 的 通 过 本 书 的 课 堂 授 课 上 机 实 践 和 作 业 指 导, 读 者 能 达 到 以 下 目 标 : 1) 掌 握 面 向 对 象 程 序 设 计 的 基 本 概 念 原 理 和 特 征 2) 掌 握 基 于 Java 的 对 象 程 序 设 计 思 想 和 技 术 3) 掌 握 Java 语 言 及 工 具 ( 主 要 是 JDK) 的 使 用 方 法, 并 能 自 主 开 发 简 单 的 程 序 4) 把 在 本 课 程 之 前 学 过 的 关 于 计 算 机 科 学 方 面 的 知 识 通 过 Java 编 程 技 术 贯 通
ii Java 语 言 程 序 设 计 起 来 一 般 来 说, 学 习 Java 语 言 的 重 点 和 难 点 在 于 纯 对 象 式 设 计 本 书 的 主 要 内 容 是 基 于 Java 语 言 进 行 面 向 对 象 的 设 计, 目 的 是 使 读 者 掌 握 面 向 对 象 程 序 设 计 的 基 本 概 念 和 原 理, 并 基 于 Java 语 言 学 习 面 向 对 象 程 序 设 计 的 3 个 重 要 特 征, 即 封 装 性 继 承 性 和 多 态 性, 最 终 目 标 是 使 读 者 能 把 Java 作 为 进 行 面 向 对 象 程 序 设 计 的 一 种 强 有 力 开 发 工 具 本 书 的 特 点 之 一 是 既 注 重 理 论, 也 强 调 软 件 开 发 实 践 ; 特 点 之 二 是 便 于 教 与 学, 其 中 的 每 个 章 节 基 本 上 是 以 一 个 学 时 为 单 位 来 组 织 的 通 过 本 书 的 学 习, 读 者 将 了 解 应 用 程 序, 学 会 创 建 用 于 处 理 终 端 用 户 简 单 输 入 的 基 本 用 户 界 面, 从 文 件 和 数 据 库 中 读 取 数 据 及 向 文 件 和 数 据 库 写 入 数 据, 通 过 网 络 发 送 和 接 收 数 据 信 息 本 书 并 不 提 供 包 罗 万 象 的 Java 语 言 内 容, 而 只 提 供 一 些 重 要 的 基 础 性 入 门 指 示, 以 方 便 读 者 掌 握 Java 平 台 上 可 用 的 一 般 编 程 功 能 通 过 本 书 的 学 习, 读 者 基 本 能 开 发 一 些 Java 小 程 序, 以 满 足 IT 企 业 的 需 求 本 书 具 体 编 写 分 工 如 下, 第 1 2 10 11 章 由 浙 江 工 业 大 学 信 息 学 院 的 汤 一 平 编 写, 第 3 6 9 章 由 浙 江 林 学 院 的 莫 路 锋 编 写, 第 5 8 章 由 中 国 计 量 学 院 的 唐 文 彬 编 写, 第 4 7 章 由 浙 江 万 里 学 院 的 陈 智 罡 编 写 全 书 由 汤 一 平 统 一 策 划 与 设 计, 他 还 与 浙 江 林 学 院 莫 路 锋 做 了 最 后 的 校 对 完 善 与 统 稿 Java 编 程 语 言 是 一 种 内 容 广 泛 发 展 迅 速 的 计 算 机 语 言, 本 书 力 图 用 Java 来 介 绍 计 算 机 科 学, 这 是 一 种 新 的 教 学 尝 试, 以 便 读 者 能 将 有 关 计 算 机 科 学 方 面 的 知 识 通 过 Java 编 程 技 术 贯 通 起 来 由 于 笔 者 的 学 识 和 水 平 有 限, 本 书 难 免 存 在 不 足 之 处, 望 读 者 不 吝 赐 教, 以 利 再 版 修 订
目 录 第 1 章 计 算 机 系 统 的 硬 件 与 软 件 1 1. 1 计 算 机 系 统 2 1. 1. 1 硬 件 与 软 件 2 1. 1. 2 硬 件 的 组 成 部 分 2 1. 1. 3 存 储 器 3 1. 1. 4 辅 助 存 储 器 3 1. 1. 5 输 入 / 输 出 设 备 4 1. 1. 6 软 件 4 1. 1. 7 程 序 的 种 类 5 1. 1. 8 操 作 系 统 5 1. 1. 9 网 络 6 1. 2 模 拟 信 号 与 二 进 制 信 号 7 1. 2. 1 二 进 制 7 1. 2. 2 计 算 机 使 用 二 进 制 的 原 因 8 1. 2. 3 模 拟 信 号 8 1. 2. 4 二 进 制 信 号 9 1. 3 计 算 机 存 储 器 11 1. 3. 1 存 储 器 的 特 性 11 1. 3. 2 信 息 的 存 储 形 式 12 1. 3. 3 信 息 的 复 制 12 1. 3. 4 字 节 12 1. 3. 5 主 存 储 器 13 1. 3. 6 硬 盘 14 1. 3. 7 文 件 15 1. 3. 8 文 件 与 操 作 系 统 15 1. 3. 9 文 件 的 类 型 16 1. 4 处 理 器 16 1. 4. 1 处 理 器 的 电 子 操 作 16 1. 4. 2 机 器 指 令 16 1. 4. 3 不 同 的 处 理 器 18 1. 4. 4 高 级 编 程 语 言 18 1. 4. 5 源 程 序 19 1. 4. 6 程 序 的 编 译 20 1. 4. 7 可 移 植 性 20 1. 4. 8 解 释 程 序 21
iv Java 语 言 程 序 设 计 1. 4. 9 虚 拟 机 21 1. 4. 10 运 行 速 度 22 第 2 章 Java 程 序 入 门 24 2. 1 Java 简 介 25 2. 1. 1 安 装 Java 25 2. 1. 2 商 用 Java 工 具 软 件 25 2. 1. 3 Java 程 序 示 例 26 2. 1. 4 字 节 代 码 26 2. 1. 5 Java 虚 拟 机 27 2. 1. 6 Applet 27 2. 1. 7 Java 源 程 序 的 创 建 28 2. 1. 8 命 令 提 示 符 窗 口 30 2. 1. 9 用 记 事 本 进 行 编 辑 30 2. 1. 10 键 入 源 程 序 31 2. 1. 11 保 存 源 文 件 31 2. 1. 12 文 件 命 名 32 2. 1. 13 Java 程 序 的 运 行 32 2. 2 Java 小 程 序 34 2. 2. 1 示 例 源 程 序 35 2. 2. 2 语 法 错 误 35 2. 2. 3 修 改 语 法 错 误 36 2. 2. 4 编 辑 编 译 运 行 三 部 曲 37 2. 2. 5 程 序 漏 洞 37 2. 2. 6 稍 长 一 点 的 示 例 程 序 37 2. 2. 7 注 释 38 2. 2. 8 括 号 40 2. 3 运 行 示 例 程 序 40 2. 4 Java 语 言 的 特 性 46 2. 4. 1 Java 语 言 的 简 单 性 特 性 47 2. 4. 2 Java 语 言 的 面 向 对 象 特 性 47 2. 4. 3 Java 语 言 的 分 布 式 计 算 特 性 47 2. 4. 4 Java 语 言 的 健 壮 性 特 性 47 2. 4. 5 Java 语 言 的 结 构 中 立 特 性 47 2. 4. 6 Java 语 言 的 安 全 性 特 性 47 2. 4. 7 Java 语 言 的 可 移 植 特 性 48 2. 4. 8 Java 语 言 的 解 释 特 性 48 2. 4. 9 Java 语 言 的 多 线 程 功 能 特 性 48 2. 4. 10 Java 语 言 的 动 态 功 能 特 性 48 2. 4. 11 Java 语 言 与 C 和 C ++ 语 言 的 区 别 48
目 录 v 第 3 章 Java 编 程 51 3. 1 基 本 数 据 类 型 52 3. 1. 1 数 据 类 型 52 3. 1. 2 整 数 类 型 52 3. 1. 3 浮 点 类 型 52 3. 1. 4 字 符 类 型 53 3. 1. 5 布 尔 类 型 53 3. 1. 6 数 据 类 型 的 封 装 53 3. 2 变 量 与 常 量 54 3. 2. 1 变 量 54 3. 2. 2 变 量 的 声 明 54 3. 2. 3 变 量 的 命 名 54 3. 2. 4 赋 值 语 句 55 3. 2. 5 常 量 55 3. 3 表 达 式 和 算 术 操 作 符 55 3. 3. 1 表 达 式 55 3. 3. 2 算 术 运 算 符 56 3. 3. 3 数 值 运 算 57 3. 4 布 尔 表 达 式 59 3. 4. 1 布 尔 表 达 式 59 3. 4. 2 逻 辑 操 作 59 3. 5 简 单 的 if 语 句 60 3. 5. 1 two-way 判 定 60 3. 5. 2 if... else 语 句 63 3. 5. 3 单 个 块 if 语 句 63 3. 5. 4 多 个 分 支 选 择 64 3. 5. 5 if 语 句 的 多 样 性 66 3. 5. 6 if 语 句 的 嵌 套 66 3. 6 while 循 环 和 do 循 环 67 3. 6. 1 while 初 涉 67 3. 6. 2 while 的 工 作 过 程 67 3. 6. 3 while 语 句 的 语 法 68 3. 6. 4 while 语 句 的 语 义 69 3. 6. 5 循 环 控 制 变 量 69 3. 6. 6 do... while 语 句 70 3. 6. 7 3 件 要 注 意 的 事 情 71 3. 7 for 循 环 72 3. 7. 1 循 环 的 3 部 分 72 3. 7. 2 for 语 句 72
vi Java 语 言 程 序 设 计 3. 7. 3 for 语 句 中 的 循 环 计 数 73 3. 7. 4 等 效 的 for 和 while 循 环 73 3. 7. 5 循 环 控 制 变 量 的 作 用 域 74 3. 8 输 入 / 输 出 75 3. 8. 1 输 入 / 输 出 包 75 3. 8. 2 输 入 / 输 出 流 75 3. 8. 3 输 入 / 输 出 异 常 76 3. 8. 4 数 字 输 入 / 输 出 77 3. 8. 5 字 符 输 入 / 输 出 78 第 4 章 面 向 对 象 的 编 程 技 术 基 础 81 4. 1 在 Java 中 定 义 类 与 对 象 82 4. 1. 1 定 义 类 82 4. 1. 2 认 识 构 造 函 数 85 4. 2 类 的 封 装 与 继 承 87 4. 2. 1 封 装 87 4. 2. 2 类 的 继 承 90 4. 3 多 态 与 静 态 94 4. 3. 1 类 的 多 态 94 4. 3. 2 静 态 成 员 的 定 义 与 使 用 98 4. 4 面 向 对 象 的 基 本 概 念 100 4. 4. 1 类 与 对 象 100 4. 4. 2 成 员 101 4. 4. 3 继 承 101 4. 4. 4 多 态 102 4. 5 重 载 屏 蔽 与 覆 盖 102 4. 5. 1 重 载 102 4. 5. 2 屏 蔽 104 4. 5. 3 覆 盖 105 第 5 章 Applet 和 Graphics 110 5. 1 简 单 的 Applet 111 5. 1. 1 编 辑 Applet 111 5. 1. 2 编 译 Applet 111 5. 1. 3 运 行 Applet 112 5. 2 Applet 类 的 层 次 113 5. 3 Applet 的 生 命 周 期 113 5. 3. 1 Applet 的 生 命 周 期 举 例 113 5. 3. 2 Applet 的 方 法 114 5. 3. 3 Applet 的 生 命 周 期 和 对 应 的 方 法 115 5. 4 Applet 标 记 和 HTML 116
目 录 vii 5. 4. 1 Applet 标 记 的 语 法 116 5. 4. 2 Applet 标 记 描 述 116 5. 4. 3 HTML 117 5. 5 appletviewer 119 5. 6 绘 制 图 形 119 5. 6. 1 简 单 的 图 形 绘 制 119 5. 6. 2 着 色 120 5. 6. 3 绘 制 直 线 120 5. 6. 4 绘 制 矩 形 121 5. 6. 5 绘 制 圆 形 和 椭 圆 121 5. 7 Circle 类 122 5. 8 利 用 图 形 方 法 画 图 124 5. 8. 1 图 片 的 规 划 124 5. 8. 2 计 算 坐 标 125 5. 8. 3 完 整 的 Applet 126 第 6 章 高 级 的 Java 编 程 功 能 129 6. 1 递 增 递 减 和 其 他 操 作 符 130 6. 1. 1 递 增 / 递 减 操 作 符 130 6. 1. 2 赋 值 操 作 符 131 6. 1. 3 调 和 级 数 例 子 131 6. 2 短 逻 辑 运 算 符 133 6. 2. 1 位 逻 辑 运 算 符 133 6. 2. 2 左 移 位 运 算 符 135 6. 2. 3 右 移 位 运 算 符 136 6. 2. 4 位 运 算 符 赋 值 137 6. 3 再 论 for 语 句 138 6. 3. 1 在 for 循 环 中 声 明 循 环 控 制 变 量 139 6. 3. 2 逗 号 的 使 用 方 法 139 6. 3. 3 for 循 环 的 一 些 变 化 140 6. 3. 4 循 环 嵌 套 141 6. 4 数 组 142 6. 4. 1 一 维 数 组 142 6. 4. 2 二 维 数 组 和 多 维 数 组 144 6. 4. 3 另 一 种 数 组 声 明 语 法 148 6. 4. 4 将 数 组 作 为 参 数 148 6. 5 对 象 的 数 组 149 6. 5. 1 对 象 引 用 数 组 149 6. 5. 2 字 符 串 引 用 数 组 150 6. 5. 3 一 个 例 子 150
viii Java 语 言 程 序 设 计 6. 6 线 性 查 找 151 6. 6. 1 构 造 函 数 156 6. 6. 2 线 性 查 找 156 6. 6. 3 完 整 的 查 找 157 6. 7 向 量 类 Vector 159 6. 7. 1 向 量 类 Vector 的 引 入 159 6. 7. 2 Vector 类 的 基 础 160 6. 7. 3 程 序 举 例 163 第 7 章 面 向 对 象 的 高 级 编 程 技 术 166 7. 1 包 的 使 用 167 7. 1. 1 package 语 句 167 7. 1. 2 import 语 句 168 7. 1. 3 classpath 的 使 用 169 7. 2 访 问 控 制 170 7. 2. 1 类 成 员 的 访 问 控 制 170 7. 2. 2 final 限 定 词 171 7. 3 抽 象 类 与 接 口 171 7. 3. 1 抽 象 类 171 7. 3. 2 接 口 173 7. 4 对 象 之 间 的 关 系 174 7. 4. 1 对 象 间 的 比 较 运 算 174 7. 4. 2 对 象 转 为 字 符 176 7. 5 内 部 类 176 7. 5. 1 类 中 定 义 的 内 部 类 176 7. 5. 2 内 部 类 被 外 部 类 引 用 的 方 法 177 7. 5. 3 匿 名 内 部 类 178 7. 6 StringBuffer 类 与 StringTokenizer 类 的 使 用 179 7. 6. 1 StringBuffer 类 的 使 用 179 7. 6. 2 StringTokenizer 类 的 使 用 180 第 8 章 图 形 化 用 户 界 面 的 编 程 技 术 183 8. 1 AWT 及 其 组 件 184 8. 1. 1 java. awt 包 184 8. 1. 2 组 件 185 8. 1. 3 容 器 186 8. 2 创 建 简 单 的 图 形 用 户 界 面 187 8. 2. 1 框 架 187 8. 2. 2 面 板 188 8. 3 布 局 管 理 器 188 8. 3. 1 FlowLayout 布 局 管 理 器 189
目 录 ix 8. 3. 2 BorderLayout 布 局 管 理 器 190 8. 3. 3 GridLayout 布 局 管 理 器 192 8. 3. 4 其 他 布 局 管 理 器 193 8. 3. 5 容 器 的 嵌 套 193 8. 4 AWT 事 件 处 理 模 型 194 8. 4. 1 事 件 处 理 原 理 194 8. 4. 2 事 件 类 196 8. 4. 3 事 件 监 听 器 197 8. 4. 4 事 件 适 配 器 200 8. 5 Swing 简 介 202 8. 5. 1 简 介 202 8. 5. 2 Swing 的 类 层 次 结 构 204 8. 5. 3 Swing 包 205 8. 5. 4 MVC 体 系 结 构 206 8. 5. 5 可 存 取 性 支 持 206 8. 5. 6 支 持 键 盘 操 作 207 8. 5. 7 设 置 边 框 207 8. 5. 8 使 用 图 标 207 8. 6 Swing 组 件 和 容 器 简 介 207 8. 6. 1 Swing 组 件 207 8. 6. 2 JComponent 类 209 8. 7 Swing 布 局 管 理 器 209 8. 8 Swing 程 序 简 介 211 8. 8. 1 简 单 的 Swing 源 程 序 211 8. 8. 2 使 用 Swing 的 基 本 规 则 212 8. 9 Swing 常 用 容 器 组 件 212 8. 9. 1 框 架 212 8. 9. 2 JApplet 213 8. 9. 3 JPanel 213 8. 9. 4 根 面 板 213 8. 9. 5 分 层 面 板 214 8. 9. 6 标 签 214 8. 9. 7 按 钮 214 8. 9. 8 文 本 输 入 215 8. 9. 9 复 选 框 219 8. 9. 10 单 选 按 钮 219 8. 9. 11 列 表 框 220 8. 5. 12 组 合 框 221 8. 9. 13 滑 块 222
x Java 语 言 程 序 设 计 8. 9. 14 菜 单 223 8. 9. 15 对 话 框 225 第 9 章 异 常 和 输 入 / 输 出 流 227 9. 1 异 常 处 理 228 9. 1. 1 异 常 的 基 本 概 念 228 9. 1. 2 异 常 类 型 228 9. 1. 3 未 被 捕 获 的 异 常 229 9. 1. 4 使 用 try 和 catch 语 句 230 9. 1. 5 使 用 多 重 catch 语 句 231 9. 1. 6 嵌 套 try 语 句 233 9. 1. 7 引 发 异 常 235 9. 1. 8 throws 语 句 236 9. 1. 9 finally 语 句 237 9. 1. 10 Java 的 内 置 异 常 239 9. 1. 11 创 建 自 己 的 异 常 子 类 240 9. 1. 12 使 用 异 常 241 9. 2 输 入 / 输 出 流 241 9. 2. 1 输 入 / 输 出 基 础 241 9. 2. 2 流 的 概 念 242 9. 2. 3 读 取 控 制 台 输 入 244 9. 2. 4 向 控 制 台 写 输 出 247 9. 2. 5 PrintWriter 类 248 9. 3 文 件 的 读 写 249 9. 4 文 件 类 252 9. 4. 1 目 录 254 9. 4. 2 使 用 FilenameFilter 255 9. 4. 3 listfiles() 方 法 256 9. 4. 4 创 建 目 录 256 第 10 章 Java 的 服 务 器 端 组 件 技 术 258 10. 1 EJB 技 术 介 绍 259 10. 1. 1 EJB 技 术 259 10. 1. 2 EJB 规 范 的 发 展 历 程 260 10. 1. 3 EJB 的 类 别 260 10. 1. 4 EJB 的 体 系 结 构 261 10. 1. 5 EJB 中 的 角 色 262 10. 1. 6 EJB 与 DCOM/ COM + 的 比 较 263 10. 1. 7 EJB 与 CORBA 的 比 较 265 10. 1. 8 结 论 266 10. 2 一 个 EJB 例 子 266
目 录 xi 10. 2. 1 安 装 EJB 服 务 器 267 10. 2. 2 声 明 EJB 远 程 接 口 267 10. 2. 3 声 明 主 接 口 268 10. 2. 4 编 写 EJB 类 268 10. 2. 5 创 建 ejb-jar 文 件 270 10. 2. 6 部 署 DemoBean 271 10. 2. 7 编 写 EJB 客 户 机 273 10. 2. 8 编 译 并 运 行 客 户 机 程 序 275 第 11 章 Java 语 言 的 应 用 实 例 HelkCFG 276 11. 1 有 关 系 统 方 面 的 一 些 预 备 知 识 277 11. 1. 1 学 而 致 用 277 11. 1. 2 编 译 原 理 的 相 关 知 识 277 11. 1. 3 数 据 结 构 278 11. 1. 4 网 站 的 相 关 知 识 279 11. 2 HelkCFG 的 总 体 构 架 279 11. 2. 1 HelkCFG 简 介 279 11. 2. 2 HelkCFG 的 基 本 功 能 280 11. 2. 3 网 页 的 链 接 结 构 280 11. 2. 4 系 统 的 层 次 结 构 281 11. 3 系 统 的 设 计 与 实 现 282 11. 4 编 译 原 理 中 的 词 法 语 法 和 语 义 分 析 285 11. 4. 1 综 述 286 11. 4. 2 词 法 分 析 287 11. 4. 3 语 法 分 析 290 11. 4. 4 语 义 分 析 296 11. 4. 5 包 的 组 织 300 11. 5 关 于 HelkCFG 301 11. 5. 1 外 观 界 面 301 11. 5. 2 HelkCFG 涉 及 的 相 关 知 识 301 11. 6 使 用 HelkCFG 303 11. 6. 1 页 面 的 编 排 303 11. 6. 2 操 作 范 例 303
4 Java
82 Java 4 1 Java 4.1.1, Person, Person 3, age,,, eat, sleep : 4.1 / / Eartch. java class Person public int age ; public void eat ( ) System. out. println ( Eating ) ; public void sleep ( ) System. out. println ( Sleeping ) ; public class Earth public static void main ( string argv [ ] ) Person person1 = new Person ( ) ; Person person2 ; person2 = new Person ( ) ; person1. age = 18 ; System. out. println ( person1 : + person1. age) ; System. out. println ( person2 : + person2. age) ; person1. eat ( ) ; person2. sleep ( ) ; Person public,, Java,,
4 83 public public class 4.1 4.1 Person age, Java,,,,, age public, void,,,,,, Eating Sleeping,,, Person,,, new, : Person person1 = new Person ( ) ; Person, person1 new Person person1, person1 Java, person1,,,,,,,,,, 4.1
84 Java 4 1 byte 0 short 0 int 0 long 0L float 0.0F double 0.0D char boolean all reference type \ u0000 ( ) false null reference type,,. ( ),., Person,,, main, main, Person, Earth,, Earth. main Person person1 person2,, person1, person2,, Person, person1 person2,,, person1. age person2. age person1. age 18,, person2. age, 0 person1 eat person2 sleep : [ < > ] class < > [extends < > ] [ implements < > ] [ < > ] ; = new ( [ 1, 2, ] ) ;, Earth. java?
4 85 4 1.2 4.2 / / Earth. java class Person 4.2 public int age ; public Person ( ) age = 18 ; public Person ( int a) age = a; public void eat ( ) System. out. println ( Eating ) ; public void sleep ( ) System. out. println ( Sleeping ) ; public class Earth public static void main ( String argv [ ] ) Person person1 = new Person ( ) ; Person person2 = new Person ( 20) ; System. out. println ( person1 : + person1. age) ; System. out. println ( person2 : + person2. age) ; person1. age = 25 ; System. out. println ( person1 : + person1. age) ; System. out. println ( person2 : + person2. age) ; person1. eat ( ) ; person2. sleep ( ) ; 4.2
86 Java 4 2 4.2, new Person ( ), Person Person ( ), new Person ( 20), Person Person ( int a ),,?,,,, int ( ), ( ), ( ), :,? ( ),,,,,,,,,,, : Java,,, new,, 4.2, new Person ( ), Person, Person ( ),, : Person ( ), Person,, Person ( ) Person,, (constructor),,,,, Java
4 87,,,,,, : < > < > ( [ < > s] ), : return, Java,? Person : Public Animal ( ) super ( ) ; super ( ),, Earth? 4.2 4.2.1,,, 4.3 : 4.3 / / Eatch. java class Person private int age ; public Person ( ) setage (18) ;
88 Java public Person ( int a) setage (a) ; public void eat ( ) System. out. println ( Eating.... ) ; public void sleep ( ) System. out. println ( Sleeping... ) ; public void setage ( int a) if (a < 0 a > 130) System. out. println ( Wrong number ) ; return ; age = a ; public int getage ( ) return age ; public class Earth public static void main ( String [ ] argv) Person person1 = new Person ( ) ; Person person2 = new Person ( 20) ; System. out. println ( person1 : + person1. getage ( ) ) ; / / System. out. println ( person2 : + person2. age) ; System. out. println ( person2 : + person2. getage ( ) ) ;
4 89 person1. age = 25 ; person1. setage (25) ; person2. setage (30) ; System. out. println ( person1 : + person1. getage ( ) ) ; System. out. println ( person2 : + person2. getage ( ) ) ; person1. eat ( ) ; person2. sleep ( ) ; 4.3 4.3 4.3, age ( private),, ( public) setage ( ) getage ( ), setage ( ), 0 130, age,, age ( private), ( public),,, :,,,,,,,,, 0,,,
90 Java 4 2.2,,, Person,,,, Person,, ( student) ( teacher) (worker) 3, 3 Person, Person, 4.4 4.4 Person Student : 4.4 / / Student. java class Person private int age ; private String name; private String sex; public Person ( ) setage (18) ; public Person ( String name, String sex, int age) this. age = age; this. name = name; this. sex = sex; public void eat ( ) System. out. println ( ) ;
4 91 public void sleep System. out. println ( ) ; public void setage ( int age) if (age < 0 age > 130) System. out. println ( Wrong number ) ; return ; this. age = age ; public void setname ( String name) this. name = name ; public String getname ( ) return name ; public void setsex ( String sex) this. sex = sex ; public String gesex ( ) return sex ; public int getage ( ) return age ; public class Student extends Person private String number; private String grade; public Student ( )
92 Java super (,, 21) ; this. number = 200205201220 ; this. grade = 022 ; public Student ( String number, String name, String sex, int age, super (name, sex, age) ; this. number = number; this. grade = grade; String grade) public void study ( ) System. out. println ( ) ; public void ShowStudent ( ) System. out. println ( : + this. number) ; System. out. println ( : + super. getname ( ) ) ; System. out. println ( : + super. getage ( ) ) ; System. out. println ( : + super. gesex ( ) ) ; System. out. println ( : + this. getgrade ( ) ) ; public String getnumber ( ) return number ; public void setnumber ( String num) this. number = num ; public String getgrade ( ) return grade ; public void setgrade ( String grade) this. grade = grade;
4 93 static public void main (String [ ] args) Student stu1 = new Student ( ) ; stu1. setnumber ( 200405201220 ) ; stu1. setname ( ) ; stu1. setsex ( ) ; stu1. setage (18) ; stu1. ShowStudent ( ) ; stu1. eat ( ) ; stu1. study ( ) ; stu1. sleep ( ) ; 4.5 4.5 4.4 extends, Student Person,,, private, Person, Student, setage ( ) getage ( ) eat ( ) sleep ( ) Student,, Student Person setage ( ), age 18, Student, number grade, study,,,, : Java, Java,,
94 Java B A, C B, : class A class B extends A class C extends B 4.3,,, 4.3.1 CShape, Ellipse, CRectangleEx, ( RectangleEx), 4.6 4.5 / / CShape. java package shapepackage; import java. awt. * ; public class CShape protected Color color ; protected int linesize ; public CShape ( ) 4.6 color = Color. black ; linesize = 1 ; public CShape ( Color c, int size) this. color = c ; this. linesize = size; public void setcolor ( Color c) this. color = c ; public Color getcolor ( )
4 95 return this. color ; public void setlinesize ( int size) this. linesize = size; public int getlinesize ( ) return this. linesize ; public void draw ( ) System. out. println (..... ) ; / / Ellipse. java package shapepackage ; public class Ellipse extends CShape int centerx ; int centery ; int width ; int height ; public Ellipse ( int x, int y, int w, int h) centerx = x ; centery = y ; width = w ; height = h ; public void draw ( ) System. out. println (.. ) ; / / CRectangle. java package shapepackage ; public class CRectangle extends CShape
96 Java int left ; int top ; int width ; int height ; public CRectangle ( int l, int t, int w, int h) left = l ; top = t ; width = w ; height = h ; public void draw ( ) System. out. println (... ) ; / / RectangleEX. java package shapepackage ; public class RectangleEx extends CRectangle int radius ; public RectangleEx (int l, int t, int w, int h, int r) super (l, t, w, h) ; radius = r; public void draw ( ) System. out. println (... ) ; / / MainClass. java package shapepackage ; import java. awt. * ; public class MainClass static public void main ( String [ ] args) CShape [ ] objshapes = new CShape [ 4] ;
4 97 objshapes [0] = new CShape ( Color. blue, 3) ; objshapes [1] = new Ellipse (30, 40, 50, 50) ; objshapes [2] = new CRectangle (30, 40, 50, 50) ; objshapes [3] = new RectangleEx (30, 40, 50, 50, 30) ; / / objshapes [0]. draw ( ) ; / / objshapes [1]. draw ( ) ; / / objshapes [2]. draw ( ) ; / / objshapes [3]. draw ( ) ; 4.7 4.7 4.5,,,,,,,,,,, 4.5,,, draw,,,, : public void draw ( ) System. out. println ( ) ; CShape Draw,,,
98 Java, : ( Worker Teacher ),,,? Java instanceof, A B, : 4.3.2 < > instanceof < >, ( true) (false) true: CShape d1 = new Ellipse (30, 40, 50, 50) ( ; d1 instanceof Ellipse ;,, false: Ellipse w1 = new Ellipse (30, 40, 50, 50) ; w1 instanceof CShape ( ) ;, 4.6 / / MainClass. java class Student private String Snum ; private String Sname; private int Sex ; static private int count ; static count = 0 ; static public int getcount ( ) return count ; public Student ( String num, String name, int sex) this. Snum = num ; count ++ ;
4 99 this. Sex = sex ; this. Sname = name ; public void ShowStudent ( ) System. out. println ( : + this. Snum) ; System. out. println ( : + this. Sname) ; System. out. println ( : + this. Sex) ; public void study ( ) / / System. out. println ( ) ; / / public class MainClass public static void main ( String argv [ ] ) / / Student obj = new Student ( s001,, 29) ; obj. ShowStudent ( ) ; System. out. println ( : + Student. getcount ( ) ) ; / / Student obj2 = new Student ( s002,, 19) ; obj2. ShowStudent ( ) ; System. out. println ( : + Student. getcount ( ) ) ; / / Student obj3 = new Student ( s003,, 29) ; obj3. ShowStudent ( ) ; System. out. println ( : + Student. getcount ( ) ) ; 4.8, : < >. < >,,,,, (
100 Java,,, 4.8 4.6 4.4,,,,,, 4.4.1 990,,,,,,,,,,,, ( instance),,,,,,,,,,,,
4 101 4 4.2,,, ( ), ( ),,,,,, ( attribute),,,,,,,,,,, (method),,,,,,,,,,,,,,,,,,,,, 4.4.3????,,,,,,,,,,,,,,,, :,
102 Java, 4.9 4.4.4 4.9,,,,,,,,,,,,,,, 3 : 1),, 2),,,, 3) ( override),,,,, 4.5 4.5.1 C,, Java,, 4.7 4.7 / / MainClass. java
4 103 public class MainClass static public int Add (int a, int b) return a + b ; static public float Add (float a, float b) return a + b ; static public int Add (int a, int b, int c) return a + b + c ; static public float Add ( float a, float b, float c) return a + b + c; static public void main ( String [ ] args ) int a, b, c ; float f1, f2, f3 ; f1 = 5 ; f2 = 8 ; f3 = 3 ; a = 3 ; b = 4 ; c = 5 ; System. out. println ( int a + b = + Add (a, b) ) ; System. out. println ( int a + b + c = + Add ( a, b, c) ) ; System. out. println ( float f1 + f2 = + Add ( f1, f2) ) ; System. out. println ( float f1 + f2 + f3 = + Add (f1, f2, f3) ) ; 4.10 4.10 4.7,,,
104 Java Add ( ) int float,,, 4, : AddInt1 ( ) AddInt2 ( ) AddFloat1 ( ) AddFloat2 ( ) Java,?, : public int Add (int a, int b) ; public int Add (int a, int b, int c) ; public float Add ( float a, float b) ; public float Add ( float a, float b, float c) ;, :,,, 4.5.2, 4.8 4.8 public class ExampleTest public static void main ( String argv [ ] ) class A A a = new A ( ) ; B b = new B ( ) ; System. out. println ( a. i = + a. i) ; System. out. println ( b. i = + b. i) ; int i = 10 ; public A ( ) System. out. println (i) ; class B extends A
4 105 public B ( ) System. out. println (i) ; 4.11 4.11 4.8 4.8 B A, A B i 10 B i, : class B extends A int i = 5 ; public B ( ) System. out. println (i) ;, b. i 5, i,,? super, : super. < > B A i, super. i?,,,,,, 4.5.3,,,,,,
106 Java 4 9 class Employee protected String name ; protected int salary; public Employee (String n, int s) this. name = n ; this. salary = s ; public String getdetails ( ) return Name : + name + \ n + Salary: + salary ; class Manager extends Employee String department ; public Manager (String name, int s, String d) super (name, s) ; this. department = d ; public String getdetails ( ) return Name : + name + \ n + Manager of + department; public class MainClass static public void main ( String [ ] args) 4.12 Employee obj = new Employee (, 1000) ; Manager obj2 = new Manager (, 800, ) ; System. out. println ( Employee obj getdetails ) ; System. out. println (obj. getdetails ( ) ) ; System. out. println ( Manager obj2 getdetails ) ; System. out. println (obj2. getdetails ( ) ) ;
4 107 4 12 4.9 Manager getdetails ( ), Employee, e.getdetails ( ) m.getdetails Employee Employee getdetails ( ), Manager Manager getdetails ( ), Employee getdetails ( ), Manager getdetails ( )? Employee obj3 = new Manager ( ) ; Obj3. getdetails ( ) ; Manager getdetails ( ), super, Manager : super. getdetails ( ) ; Employee getdetails ( ), super, :,,,,, :????
108 Java 1.,? Public class Q1 public void method ( int i) ; A. private void method (int i) B.public void method ( int k) C.public int method (int i) D.private float method (float f) E.public String method (int i, int j) 2. Q2 2,? public class Q2 1 public void method ( int I) ; class Q2 2 extends Q2 1 A. public void method ( int i) B.private void method (int j) C.public int method ( int i) D.public float method (float f) E.private String method ( String s) 3., method? 4.Q4 2? public class Q4 1 public void method ( int i) Systems. out. println (10) ; public class Q4 2 extends Q4 1 public static void main ( String argv [ ] ) Q4 1 q1 = new Q4 1 ( ) ; Q4 2 q2 = new Q4 2 ( ) ; q1. method (1) ; q2. method (2) ; public void method ( int k ) Systmes. out. println (20) ;
4 109 A.10, 20 B.10, 10 C.20, 20 D.1, 2 E.20, 10 5., Q4 2 6 Q4 1 q2 = new Q4 2 ( ) ;? A.10, 20 B.10, 10 C.20, 20 D.20, 10 E.1, 2 6. 4, Q4 2 8 ( (Q4 2) q2). method ( ) ;? A.10, 20 B.10, 10 C.20, 20 D.20, 10 E.1, 2 7. 4.4 Person Teacher Worker, Worker 8.? 9.
5 Applet Graphics Java. applet. Applet Applet Applet applet HTML Graphics Circle Applet Application Applet Applet Applet Graphics
5 Applet Graphics 111 Java, : ( Application ) (Applet) Applet Java, HTML,, Java Internet, Java Web Java, Applet Applet Java, Applet Applet 5.1 Applet Applet, JDK Applet, java. applet. Applet,, java. awt. *, Applet, Test 5.1.1 Applet Test Applet 5.1 import java. applet. Applet ; / / Applet import java. awt. * ; public class Test extends Applet / / public void paint ( Graphics gr ) setbackground ( Color. pink ) ; Test gr. drawstring (, 25, 30) ; gr. drawstring (,, 25, 50) ; gr. drawstring (,, 25, 70) ; gr. drawstring (,, 25, 90 ) ; gr. drawstring (,, 25, 110) ; gr. drawstring ( ---, 50, 150) ; import java. applet. Applet java. awt. * ) public class Test extends Applet ( Test, java. applet.applet paint,, Applet 5.1.2 Applet,, Test. java
112 Java : C : \ code > javac Test. java Test. class 5.1.3 Applet, HTML, appletviewer HTML, Cui.html Test. class < html > < head > < title > test </ title > </ head > < body > < applet code = Test. class height = 200 width = 300 > </ applet > </ body > </ html > : C : \ code > appletviewer Test. html, 5.1, appletviewer 5.2 5.1 Test. java 5.2 5.1, Applet Java, Application Application main ( ), Applet, HTML, HTML Applet Applet appletviewer, Application
5 Applet Graphics 113 5 2 Applet Applet, : import java. applet. * ; import java. awt. * ; public class Test extends Applet import, java. applet. * java. awt. * Applet Applet public,,, Test. java, java. applet. Applet Applet java. applet. Applet, java. awt. Panel, Applet ( Panel) java. awt. Panel java. awt.container, Applet ( Container), java. awt.container java. awt. Component, Applet (Component), Applet, 5.3 Applet 5.3 Applet Applet Swing JApplet, Swing JApplet, JApplet Applet 5.3 Applet 5.3.1 Applet Applet 5.2 import java. awt. Graphics ;
114 Java import java applet. Applet ; public class HWloop extends Applet AudioClip sound ; / / public void init ( ) sound = getaudioclip ( hello. au ) ; / / public void paint ( Graphics g) g. drawstring ( hello Audio, 25, 25) ; / / public void start ( ) sound. loop ( ) ; / / public void stop ( ) sound. stop ( ) ; / /, Applet,, ; 5.3.2 Applet, Applet Application Applet Applet 4 ( JApplet ) : init ( ) start ( ) stop ( ) destroy ( ), Applet, Applet 1. init ( ) Applet Java, Applet,,, 2.start ( ) init ( ), start ( ) Applet Applet, start ( ), start ( ), init ( ), init ( ), start ( ) start ( )
5 Applet Graphics 115 3 stop ( ) Applet stop ( ) start ( ), stop ( ), Applet,, Applet, 4.destroy ( ), Java destroy ( ) Applet,, destroy ( ) 5.3.3 Applet Applet 4 : init ( ), Applet start ( ), Applet Applet, Applet stop ( ), Applet, Applet,, Applet start ( ),,,, Applet destroy ( ), 5.4 5.4 Applet
116 Java 5 4 Applet HTML, Applet,, HTML, Applet < applet code = HWloop. class width = 200 height = 100 > </ applet > code, Applet,. class width height, Applet 5.4.1 Applet Applet : < applet [ archive = archivelist] code = appletfile. class width = pixels height = pixels [ codebase = codebaseurl ] [ alt = alternatetext ] [ name = appletinstancename ] [ align = alignment ] [ vspace = pixels ] [ hspace = pixels ] > [ < param name = appletattribute1 value = value > ] [ < param name = appletattribute2 value = value > ] [ alternatehtml] </ applet > 5.4.2 Applet 1) archive = archivelist archives codebase AppletClassLoader ArchiveList archives (, ) 2) code = appletfile. class Applet,. class 3) width = pixels height = pixels Applet ( ), Applet 4) codebase = codebaseurl Applet URL ( Applet ), URL
5 Applet Graphics 117 5 alt = alternatetext, Applet Applet, 6) name = appletinstancename Applet, Applet Applet 7) align = alignment Applet HTML IMG, : left, right, top, texttop, middle, absmiddle, baseline, bottom absbottom 8) vspace = pixels hspace = pixels Applet ( ) 9) < param name = appletattribute1 value = value > Applet Applet getparameter ( ) 5.4.3 HTML HTML,, HTML < p > </ p >,, < p > It began one day in summer about thirty years ago, and it happened to four children. Jane was the oldest and Mark was the only boy, and between them they ran everything. </ p > ( ) : It began one day in summer about thirty years ago, and it happened to four children. Jane was the oldest and Mark was the only boy, and between them they ran everything. < p > </ p >,,, < something >, </ something > markup web,, < p > </ p > : < h3 > This is a level 3 heading < / h3 > ( ), : This is a level 3 heading HTML ASCII, ( ),, Word (
118 Java HTML ASCII, Applet) html ASCII,, : < html > < body > < h3 > Here is an Exciting Applet < / h3 > < p > And what an exciting applet it is. With a width of 300 pixels, and a height of 150 pixels, this applet has it all. </ p > < applet code = HWloop. class width = 300 height = 150 > < / applet > </ body > < / html > ( ) < html > html, </ html > html, < head > </ head > < title > ( web, ) </ title > < body >, </ body > < hr >,, : < html > < head > < title > A Boring Title </ title > </ head > < body > < h3 > Here is an Exciting Applet < / h3 > < p > And what an exciting applet it is. With a width of 300 pixels, and a height of 150 pixels, this applet has it all. </ p > < applet code = HWloop. class width = 300 height = 150 > </ applet > < hr > </ body > </ html >,,
5 Applet Graphics 119 h3 > </ h3 >,, 5.5 appletviewer Applet Web, Java, HotJava TM Netscape Navigator, JDK Applet HTML, appletviewer appletviewer Web Applet Java appletviewer Applet, : C : \ code > appletviewer Test. html appletviewer Applet HTML Applet appletviewer HTML appletviewer HTML : < HTML > </ HTML > < APPLET CODE = Test. class WIDTH = 200 HEIGHT = 100 > < / APPLET > HTML, < >, < applet >, < applet > </ applet > 5.6,,, Graphics Graphics java. awt,, Graphics,, Applet paint ( ), Applet, Graphics, paint ( ), paint ( ), Graphics paint ( ) : public void paint ( Graphics gr) 5.6.1 applet,
120 Java 5 3 import java. applet. Applet ; import java. awt. * ; public class SquareAndRectangle extends Applet public void paint ( Graphics gr ) setbackground ( Color. pink ) ; / / 100, 100 gr. drawrect (10, 10, 100, 100) ; / / gr. drawline (10, 10, 110, 100) ; / / gr. drawline (110, 10, 10, 110) ; 5.5,, 5.5 5.6.2,,, java. awt Color setbackground ( Color.something), setcolor ( Color.something),, Color Color 13 : white ( ) lightgray ( ) gray ( ) darkgray ( ) black ( ) red ( ) pink ( ) orange ( ) yellow ( ) green ( ) magenta ( ) cyan ( ) blue ( ) gr. setcolor( Color. blue ) ; 5.6.3 drawline ( ), : drawline (int x1, int y1, int x2, int y2) ( x1, y1) ( x2, y2), 5.6 5.6 drawline ( )
5 Applet Graphics 121 5.6.4 drawrect ( ), : drawrect ( int x, int y, int width, int height),, x x + width, y y + height, 5.7, 5 7 drawrect ( ) 5.6.5 5.4: import java. applet. Applet ; import java. awt. * ; / / 150, 150 public class JustOneCircle extends Applet final int radius = 25 ; public void paint ( Graphics gr ) setbackground ( Color. lightgray ) ; gr. drawoval ( (150/ 2 - radius), (150/ 2 - radius), radius * 2, radius * 2 ) ;, 5.8 drawoval ( ), : drawoval ( int x, int y, int width, int height) 5.8 5.9 drawoval ( ) ( x, y), width height, ( x, y) width height 5.9 drawoval ( ) ( )
122 Java Graphics,, Applet,, 150, : x = (150/ 2 - radius) y = (150/ 2 - radius), 5.7 Circle Circle : Circle? Applet 100,? Circle,,?,,,,, Circle, 3 Applet 5.5 import java. applet. Applet ; import java. awt. * ; class Circle / / int x, y, radius ; / / public Circle ( ) x = 0 ; y = 0 ; radius = 0 ; public Circle ( int x, int y, int radius ) this. x = x ; this. y = y ; this. radius = radius; / / void draw ( Graphics gr ) int ulx = x - radius ; / / X int uly = y - radius ; / / Y gr. drawoval ( ulx, uly, 2 * radius, 2 * radius ) ; public class testcircle extends Applet
5 Applet Graphics 123 Circle circ1 = new Circle ( 100, 100, 10 ) ; Circle circ2 = new Circle ( 100, 100, 20 ) ; Circle circ3 = new Circle ( 100, 100, 30 ) ; public void paint ( Graphics gr ) circ1. draw ( gr ) ; circ2. draw ( gr ) ; circ3. draw ( gr ) ;, 5.10, Circle drawoval ( ) class Circle / / / / / / Circle,, int x, y, radius; public Circle ( ) 5.10 x = 0 ; y = 0 ; radius = 0 ; public Circle ( int x, int y, int radius ) ( x, y), Circle ( ), :, 0,, x y radius public Circle ( ) x = 0 ; y = 0 ; radius = 0 ;
124 Java public Circle ( int x, int y, int radius ) this. x = x; this. y = y ; this. radius = radius; this, this.x = x x x, draw ( ) java drawoval ( int x, int Y, int width, int height), Applet draw ( Graphics gr ) 5.11 draw ( ) int ulx = x - radius ; / / x int uly = y - radius ; / / y gr. drawoval ( ulx, uly, 2 * radius, 2 * radius ) ; ( x, y ), 5.11 5.8 Applet, Java, 5.8.1 Java,, 5.11 5.12, Java Applet
5 Applet Graphics 125 5 12 5.8.2 1. Applet,, Applet import java. applet. Applet ; import java. awt. * ; / / 350 * 250 public class houserectangles extends Applet final int width = 350, height = 250 ; final int housex = 65, housey = 100, housew = 110, househ = 110 ; final int doorx = 120, doory = 165, doorw = 25, doorh = 40 ; final int lwindx = 90, lwindy = 115, lwindw = 30, lwindh = 30 ; final int rwindx = 130, rwindy = 115, rwindw = 30, rwindh = 30 ; final int trunkx = 255, trunky = 100, trunkw = 10, trunkh = 100 ; public void paint ( Graphics gr ) gr. setcolor (Color. orange ) ; / / there is no Color brown gr. drawrect ( housex, housey, housew, househ) ; / / house gr. drawrect (doorx, doory, doorw, doorh ) ; / / door gr. drawrect ( lwindx, lwindy, lwindw, lwindh) ; / / lwind gr. drawrect ( rwindx, rwindy, rwindw, rwindh) ; / / rwind
126 Java gr. fillrect ( trunkx, trunky, trunkw, trunkh) ; / / trunk, 5.13 fillrect ( ),, drawrect ( ), 5.13 Applet 2. 5.12,,,, : final int treex = 200, treey = 45, treew = 125, treeh = 55 ; / /, Applet : gr. setcolor ( Color. green ) ; gr. filloval ( treex, treey, treew, treeh ) ; filloval ( ) drawoval ( ),, ( x, y),, housex,, 5.8.3 Applet, Applet import java. applet. Applet ; import java. awt. * ; / / 350 * 250 public class housecomplete extends Applet
5 Applet Graphics 127 final int width = 350, height = 250 ; final int housex = 65, housey = 100, housew = 110, househ = 110 ; final int doorx = 120, doory = 165, doorw = 25, doorh = 40 ; final int lwindx = 90, lwindy = 115, lwindw = 30, lwindh = 30 ; final int rwindx = 130, rwindy = 115, rwindw = 30, rwindh = 30 ; final int trunkx = 255, trunky = 100, trunkw = 10, trunkh = 100 ; final int treex = 200, treey = 45, treew = 125, treeh = 55 ; / / final int L1X1 = 0, L1Y1 = 140, L1X2 = 40, L1Y2 = 115 ; final int L2X1 = L1X2, L2Y1 = L1Y2, L2X2 = housex, L2Y2 = 130 ; final int L3X1 = housex + housew, L3Y1 = 135, L3X2 = trunkx, L3Y2 = 140 ; final int L4X1 = trunkx + trunkw, L4Y1 = L3Y2, L4X2 = width, L4Y2 = 110 ; final int roof1x1 = housex, roof1y1 = housey ; final int roof1x2 = housex + housww/ 2, roof1y2 = 50 ; final int roof2x1 = roof1x2, roof2y1 = roof1y2 ; final int roof2x2 = housex + housww, roof2y2 = housey ; final int doorx = housex + housew/ 2 - doorw/ 2 ; public void paint ( Graphics gr ) gr. setcolor ( Color. orange ) ; / / gr. drawrect ( housex, housey, housew, househ) ; / / gr. fillrect ( doorx, doory, doorw, doorh ) ; / / gr. drawrect ( lwindx, lwindy, lwindw, lwindh) ; / / gr. drawrect ( rwindx, rwindy, rwindw, rwindh) ; / / gr. fillrect ( trunkx, trunky, trunkw, trunkh) ; / / gr. setcolor ( Color. green ) ; gr. filloval ( treex, treey, treew, treeh ) ; gr. drawline ( L1X1, L1Y1, L1X2, L1Y2 ) ; / / 1 gr. drawline ( L2X1, L2Y1, L2X2, L2Y2 ) ; / / 2 gr. drawline ( L3X1, L3Y1, L3X2, L3Y2 ) ; / / 3 gr. drawline ( L4X1, L4Y1, L4X2, L4Y2 ) ; / / 4 gr. setcolor ( Color. green ) ; gr. drawline ( roof1x1, roof1y1, roof1x2, roof1y2 ) ; gr. drawline ( roof2x1, roof2y1, roof2x2, roof2y2 ) ;, 5.14
128 Java 5 14 Applet Java Applet Java, Applet HTML, Java Applet java. applet. Applet Java Applet Applet, init start stop destroy 4 Applet 4 Applet Applet : Applet Java, Applet Java, HTML, Applet HTML java. awt Graphics, Applet, paint ( ), Graphics, Graphics 1. Java Applet? 2.Java,? Applet? 3. Applet 4. Java Applet,, Welcome to java! 5. 4 Java Applet 4 6., 5, 10, Graphics drawoval
6 Java for Vector for Vector
130 Java 6 1, ( ++ ) ( - - ) 6.1.1 /,,, 1 1, 1 1, 1, : x = x + 1 ; : x + + ;, : x = x - 1 ; : x - - ;, ( prefix) ( postfix),,, Java,, Java : x = 42 ; y = + + x ; y 43, y = + + x : x = x + 1 ; y = x ;, : x = 42 ; y = x + + ; x,, y 42,, x 43, y = x + + ; : y = x ; x = x + 1 ; + + ( - - ) : / / Demonstrate ++
6 Java 131 6.1.2 class IncDec public static void main (String args [ ] ) int a = 1 ; int b = 2 ; int c; int d; c = + + b ; d = a + + ; c ++ ; System. out println ( a = + a) ; System. out println ( b = + b) ; System. out println ( c = + c) ; System. out println ( d = + d) ; : a = 2 b = 3 c = 4 d = 1 = Java, : var = expression ;, +, -, *, / ( ) =,, sum 5: sum + = 5 ; / / add 5 to sum : sum = sum + 5 ; / / add 5 to sum, 6.1 6.1 = sum = 5; sum = 5 + = sum + = 5; sum = sum + 5 ; - = sum - = 5; sum = sum - 5; * = sum * = 5; sum = sum * 5 ; / = sum / = 5 ; sum = sum/ 5;,,,, =,, 6.1.3 sum :
132 Java sum 1/ 1 + 1/ 2 + 1/ 3 + 1/ 4 + 1/ 5 + 1/ 6, ( harmonic series), : Public class Harmenic Series double value ( int limit) int term = 1 ; double sum = 0. 0 ; while ( term < = limit ) sum + = 1. 0/ term ; / / term sum term + + ; / / term return sum; class HarmonicTester public static void main ( String [ ] args ) throws IOException BufferedReader stdin = new BufferedReader ( new InputStreamReader ( System. in) ) ; HarmonicSeries series = new HarmonicSeries ( ) ; System. out. println ( input the num : ) ; int limit = Integer. parseint ( stdin. readline ( ) ) ; System. out. println ( Sum of 6 terms : + series. value (limit) ) ; : 1) HarmonicSeries 2) value ( ) 3) HarmonicSeries, 4) HarmonicTester HarmonicSeries, value ( ),
6 Java 133 6 2 6.2.1 (AND) (OR) (XOR) (NOT), & ^, 6.2, 6.2 A B A B A & B A ^ B A 0 0 0 0 0 1 1 0 1 0 1 0 0 1 1 0 1 1 1 1 1 1 0 0 1. (NOT), NOT, 42, : 00101010 : 11010101 2. (AND) &, 1, 1, 0 : 00101010 42 &00001111 15 00001010 10 3. (OR), 1, 1 : 00101010 42 00001111 15 00101111 47 4. (XOR ) ^, 1, 0 ^ XOR
134 Java 1 42 0,, 00101010 42 ^00001111 15 00100101 37 5. : class BitLogic public static void main (String args [ ] ) String binary [ ] = 0000, 0001, 0010, 0011, 0100, 0101, 0110, 0111, 1000, 1001, 1010, 1011, 1100, 1101, 1110, 1111 ; int a = 3 ; / / 0 + 2 + 1 0011 int b = 6 ; / / 4 + 2 + 0 0110 int c = a b ; int d = a & b ; int f = ( a & b) ( a & b) ; int g = a & 0x0f; System. out. println ( a = + binary [ a] ) ; System. out. println ( b = + binary [ b] ) ; System. out. println ( a b = + binary [c] ) ; System. out. println ( a&b = + binary [ d] ) ; System. out. println ( a^b = + binary [e] ) ; System. out. println ( a&b a& b = + binary [f] ) ; System. out. println ( a = + binary [g] ) ;, a b 4 : 00, 01, 10 11 & a b c d e f ^ binary 0 15, n binary [ n] a 3, binary [3 ] a 0x0f ( 0000 1111 ) a, g 16 binary, :
6 Java 135 a = 0011 b = 0110 a b = 0111 a&b = 0010 a^b = 0101 a&b a& b = 0101 a = 1100 6.2.2 < < : value < < num, num value, < < num, ( ), 0 int, 1, 31 ; long, 1, 63 byte short, Java, int,, int byte short int, 31,, byte short, int,, 1,, byte : / / class ByteShift public static void main (String args [ ] ) byte a = 64, b ; int i ; i = a < < 2 ; b = (byte) (a < < 2) ; System. out. println ( Original value of a : + a) ; System. out. println ( i and b : + i + + b) ; : Original value of a : 64 i and b : 256 0 a, int, 64 (01000000) 256 (100000000) i,, b 1, 0, b 0
136 Java 2, 1 (31 63 ), : / / 2 class MultByTwo public static void main (String args [ ] ) int i ; int num = 0xFFFFFFE; for ( i = 0 ; i < 4 ; i + + ) num = num < < 1 ; System. out. println ( num) ; : 536870908 1073741816 2147483632-32, 4, - 32, 1 31, 6.2.3 > > : value > > num, num value, > > num 32 2, 8 a: int a = 32 ; a = a > > 2 ; / / 8,, 35 2, 2, 8 a: int a = 35 ; a = a > > 2 ; / / 8 : 00100011 35 > > 2 00001000 8, 2 2,
6 Java 137 ( ),, 1,, 0, ( ),, - 8 > > 1-4, : 11111000-8 > > 1 11111100-4, ( ) 1, - 1-1, byte 0x0f,,, / / class HexByte static public void main (String args [ ] ) char hex [ ] = 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, a, b, c, d, e, f ; byte b = (byte) 0xf1 ; : 6.2.4 b = 0xf1 ; System. out. println ( b = 0x + hex [ (b > > 4) & 0x0f] + hex [b & 0x0f] ) ;, a 4 a: a = a > > 4 ; a > > = 4 ;, a OR b a: a = a b ; a = b ; int, : class OpBitEquals public static void main (String args [ ] ) int a = 1 ; int b = 2 ;
138 Java int c = 3 ; a = 4 ; b > > = 1 ; c < < = 1 ; a ^ = c; : a = 3 b = 1 c = 6 System. out. println ( a = + a) ; System. out. println ( b = + b) ; System. out. println ( c = + c) ; 6. 3 for for, for for : for ( ; ; ) / /, for,,,,,, ;,,,, for tick : / / for class ForTick public static void main (String args [ ] ) int n ; for ( n = 10 ; n > 0 ; n - - ) System. out. println ( tick + n) ;
6 Java 139 6 3.1 for for,,,, for : / / for class ForTick public static void main ( String args [ ] ) / / n for (int n = 10 ; n > 0 ; n - - ) System. out. println ( tick + n) ; n for, : for (, for ) for,, for, for,, i, i for / / class FindPrime public static void main ( String args [ ] ) int num ; boolean isprime = true ; num = 14 ; for (int i = 2 ; i < = num/ 2 ; i + + ) if ( (num % i) = = 0) isprime = false; break ; if (isprime) System. out. println ( Prime ) ; else System. out. println ( Not Prime ) ; 6.3.2 for, : class Sample public static void main (String args [ ] )
140 Java int a, b ; b = 4 ; for ( a = 1 ; a < b ; a + + ) System. out. println ( a = + a) ; System. out. println ( b = + b) ; b - - ;,, for, b for, Java, Java for,, for, : class Comma public static void main (String args [ ] ) int a, b ; for ( a = 1, b = 4 ; a < b ; a + +, b - - ) System. out. println ( a = + a) ; System. out. println ( b = + b) ;, a b, : a = 1 b = 4 a = 2 b = 3 : C/ C + +,,, Java Java,, for 6.3.3 for for, for 3 (, ), for 3,,, : boolean done = false ; for ( int i = 1 ;! done; i + + ) for
6 Java 141 if ( interrupted ( ) ) done = true ;, for, done for i for Java for, : / / for class ForVar public static void main ( String args [ ] ) int i ; boolean done = false; i = 0 ; for ( ;! done ; ) System. out. println ( i is + i) ; if ( i = = 10) done = true ; i ++ ;, for, for, for,,,,,,,, for for for 3, ( ) : for ( ; ; ) / /...,,,, 6.3.4, Java,, : / / class Nested public static void main ( String args [ ] ) int i, j ;
142 Java for (i = 0 ; i < 10 ; i + + ) for (j = i; j < 10 ; j + + ) System. out. print (. ) ; System. out. println ( ) ; :....................................................... 6.4,,, Java C/ C + + 6.4.1, : type [ ] var ;, type,, int, month days int month days [ ] ; month days, month days, month days, new month days new new, new, : array var = new type [ size] ;
6 Java 143 type, size, array var, new, new, 12 month month days = new int [ 12] ;, month days days 12, : 2,, new, Java,,,, 28 month month days [ 1] = 28 ; 3 : System. out. println ( month days [ 3 ] ) ;, / / class Array public static void main ( String args [ ] ) int month days [ ] ; month days = new int [ 12] ; month days [ 0] = 31 ; month days [ 1] = 28 ; month days [ 2] = 31 ; month days [ 3] = 30 ; month days [ 4] = 31 ; month days [ 5] = 30 ; month days [ 6] = 31 ; month days [ 7] = 31 ; month days [ 8] = 30 ; month days [ 9] = 31 ; month days [ 10] = 30 ; month days [ 11] = 31 ; System. out. println ( April has + month, 4,, 4 month days [3 ] days days [3] + days. ) ;, : Java
144 Java int month days new int [12] ; Java Java, new,, : / / class AutoAray public static void main ( String args [ ] ) int month dadys [] = 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31; Sytem. cut. println ( April has + month days [3] + days. ) ;, Java Java (, Java C/ C + +, C/ C + + ), month days 0 11 ( ), / / class Average public static void main (String args [ ] ) double nums [ ] = 10. 1, 11. 2, 12. 3, 13. 4, 14. 5; double result = 0 ; int i ; for ( i = 0 ; i < 5 ; i + + ) result = result + nums [ i] ; System. out. println ( Average is + result / 5) ; 6.4.2 Java,, twod int twod [ ] [ ] = new int [4] [5] ; 4 5 twod int, 6.1
6 Java 145 6 1 (4 5 ) / / class TwoDArray public static void main (String args [ ] ) int twod [ ] [ ] = new int [4] [5] ; int i, j, k = 0 ; for ( i = 0 ; i < 4 ; i + + ) for (j = 0 ; j < 5 ; j + + ) twod [i] [j] = k ; k ++ ; for ( i = 0 ; i < 4 ; i + + ) for (j = 0 ; j < 5 ; j + + ) System. out. print (twod [i] System. out. println ( ) ; : 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 [j] + ) ;, ( ), twod, int twod [ ] [ ] = new int [4] [ ] ; twod [0] = new int [5] ; twod [1] = new int [5] ;
146 Java twod 2] = new int [5] ; twod [3] = new int [5] ;,,,,,,, / / class TwoDAgain public static void main (String args [ ] ) int twod [ ] [ ] = new int [4] [ ] ; twod [0] = new int [1] ; twod [1] = new int [2] ; twod [2] = new int [3] ; twod [3] = new int [4] ; int i, j, k = 0 ; for ( i = 0 ; i < 4 ; i + + ) for (j = 0 ; j < i + 1 ; j ++ ) twod [i] [j] = k ; k + + ; [0] [0] [1] [0] [1] [1] for ( i = 0 ; i < 4 ; i + + ) for (j = 0 ; j < i + 1 ; j ++ ) System. out. print (twod [i] System. out. println ( ) ; : 0 1 2 3 4 5 6 7 8 9 6.2 [2] [0] [2] [1] [2] [2] [3] [0] [3] [1] [3] [2] [3] [3] [j] + ) ;,, 6.2,,, ( ),
6 Java 147, / / class Matrix public static void main ( String args [ ] ) double m [ ] [ ] = 0 * 0, 1 * 0, 2 * 0, 3 * 0, 0 * 1, 1 * 1, 2 * 1, 3 * 1, 0 * 2, 1 * 2, 2 * 2, 3 * 2, 0 * 3, 1 * 3, 2 * 3, 3 * 3 ; int i, j ; for (i = 0 ; i < 4 ; i + + ) for (j = 0 ; j < 4 ; j + + ) System. out. print (m [i] System. out. println ( ) ;, : 0. 0 0. 0 0. 0 0. 0 0. 0 1. 0 2. 0 3. 0 0. 0 2. 0 4. 0 6. 0 0. 0 3. 0 6. 0 9. 0 [j] + ) ; 3 4 5,, / / class threedmatrix public static void main ( String args [ ] ) int threed [ ] [ ] [ ] = new int [3] [4] [5] ; int i, j, k ; for (i = 0 ; i < 3 ; i + + ) for (j = 0 ; j < 4 ; j + + ) for (k = 0 ; k < 5 ; k + + ) threed [i] [j] [k] = i * j * k ; for (i = 0 ; i < 3 ; i + + ) for (j = 0 ; j < 4 ; j + + )
148 Java for (k = 0 ; k < 5 ; k + + ) System. out. print (threed [i] [j] [k] + ) ; system. out. println ( ) ; System. out. println ( ) ; : 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 2 3 4 0 2 4 6 8 0 3 6 9 12 0 0 0 0 0 0 2 4 6 8 0 4 8 12 16 0 6 12 18 24 6.4.3 : type [ ] var - name ;, type,, : int al [ ] = new int [3] ; int [ ] a2 = new int [3] ; : char twod1 [ ] [ ] = new char [3] [4] ; char [ ] [ ] twod2 = new char [3] [4] ; 6.4.4, ( ), findmaximum ( ) sumelements ( ) import java. io. * ;
6 Java 149 class ArrayOps void print ( int [ ] x ) for ( int index = 0 ; index < x. length; index + + ) System. out. print ( x [index] + ) ; System. out. println ( ) ; class ArrayDemo operate. print ( ar2) ar2 x, 6.3,, 6.3, ar2 x,,, x ar2 6.3, 6.5, int double char,, 6.5.1,,, str,, str : String str ; / / str = Hello World ;, ( ) String str; str = Hello World ; str = Good - by ;
150 Java 6 5.2 strarray, ( ) String [ ] strarray ; 8 : strarray = new String [ 8] ; strarray 8 ( ), null,, 0, : strarray [0] = Hello ; new ( ) 6.5.3 : class StringArray public static void main ( String [ ] args ) String [ ] strarray = new String [ 8] ; strarray [0] = Hello ; strarray [1] = World ; strarray [2] = Greetings ; strarray [3] = Jupiter ; strarray [ strarray. length - 1 ] = the end ; for (int j = 0 ; j < strarray. length ; j + + ) if ( strarray [ j]! = null ) System. out. println ( Slot + j + : + strarray [j] ) ; else System. out. println ( Slot + j + : + empty ) ; 1 : Slot 0 : Hello Slot 1 : World Slot 2 : Greetings Slot 3 : Jupiter Slot 4 : empty Slot 5 : empty Slot 6 : empty
6 Java 151 Slot 7 the end 6.6 Searcher, Searcher, : class Searcher / /,, - 1 public static int search ( array, target )....../ / class SearchTester public static void main ( String [ ] args ) final int thesize = 20 ; String [ ] strarray = new String [ thesize ] ;...... / / strarray / / int where = Searcher. search ( strarray, ) ; if ( where > = 0 ) System. out. println ( Target found in slot + where ) ; else System. out. println ( Target not found ) ; array String [ ],, main ( ), for - loop 0 class Searcher / /,, - 1 public static int search ( String [ ] array, String target ) for ( int j = 0 ; j array. length; j + + )
152 Java if ( array [j] null ) class SearchTester public static void main ( String [ ] args )...... int where = Searcher. search ( strarray, Peoria ) ;......,,, null if, j,, class Searcher / /,, - 1 public static int search ( String [ ] array, String target ) for ( int j = 0 ; j < array. length ; j ++ ) if ( array [j]! = null ) / / do something here with a non - null slot class SearchTester public static void main ( String [ ] args )...... int where = Searcher. search ( strarray, ) ;......, if, class Searcher / /,, - 1 public static int search ( String [ ] array, String target )
6 Java 153 for ( int j = 0 ; j < array. length ; j ++ ) if ( array [j]! = null ) if ( array [j]. equals ( target ) ) return ; return ; / /, class SearchTester public static void main ( String [ ] args )...... int where = Searcher. search ( strarray, ) ;...... return, for... loop,, for... loop, - 1 class Searcher / /,, - 1 public static int search ( String [ ] array, String target ) for ( int j = 0 ; j < array. length ; j ++ ) if ( array [j]! = null ) if ( array [j]. equals ( target ) ) return j ; / / return - 1 ; / / class SearchTester public static void main ( String [ ] args ) final int thesize = 20 ; String [ ] strarray = new String [ thesize ] ; strarray [0] = ;