首页 java

java

举报
开通vip

javaJava语言入门 本文章下载于Txt66.com 第 一 章 Java语 言 的 产 生 及 其 特 点 1.1 Java产 生 的 历 史 与 现 状 1.1.1 Java产 生 的 历 史   Java来 自 于Sun公 司 的 一 个 叫Green的 项 目, 其 原 先 的 目 的 是 为 家 用 消 费 电 子 产 品 开 发 一 个 分 布 式 代 码 系 统, 这 样 我 们 可 以 把E-mail发 给 电 冰 箱、 电 视 机 等 家 用 电 器, 对 它 们 进 行 控 制, 和 它 们 进 行...

java
Java语言入门 本文章下载于Txt66.com 第 一 章 Java语 言 的 产 生 及 其 特 点 1.1 Java产 生 的 历 史 与 现 状 1.1.1 Java产 生 的 历 史   Java来 自 于Sun公 司 的 一 个 叫Green的 项 目, 其 原 先 的 目 的 是 为 家 用 消 费 电 子 产 品 开 发 一 个 分 布 式 代 码 系 统, 这 样 我 们 可 以 把E-mail发 给 电 冰 箱、 电 视 机 等 家 用 电 器, 对 它 们 进 行 控 制, 和 它 们 进 行 信 息 交 流。 开 始, 准 备 采 用C++,但C++太 复 杂, 安 全 性 差, 最 后 基 于C++开 发 一 种 新 的 语 言Oak(Java的 前 身),Oak是 一 种 用 于 网 络 的 精 巧 而 安 全 的 语 言,Sun公 司 曾 依 此 投 标 一 个 交 互 式 电 视 项 目, 但 结 果 是 被SGI打 败。 可 怜 的Oak几 乎 无 家 可 归, 恰 巧 这 时Mark Ardreesen开 发 的Mosaic和Netscape启 发 了Oak项 目 组 成 员, 他 们 用Java编 制 了HotJava浏 览 器, 得 到 了Sun公 司 首 席 执 行 官Scott McNealy的 支 持, 触 发 了Java进 军Internet。 Java的 取 名 也 有 一 个 趣 闻, 有 一 天, 几 位Java成 员 组 的 会 员 正 在 讨 论 给 这 个 新 的 语 言 取 什 么 名 字, 当 时 他 们 正 在 咖 啡 馆 喝 着 Java(爪 哇) 咖 啡, 有 一 个 人 灵 机 一 动 说 就 叫Java怎 样, 得 到 了 其 他 人 的 赞 赏, 于 是,Java这 个 名 字 就 这 样 传 开 了。 1.1.2 Java的 现 状   Java是Sun公 司 推 出 的 新 的 一 代 面 向 对 象 程 序 设 计 语 言, 特 别 适 合 于Internet应 用 程 序 开 发, 它 的 平 台 无 关 性 直 接 威 胁 到Wintel的 垄 断 地 位。 一 时 间,\" 连Internet, 用Java编 程\", 成 为 技 术 人 员 的 一 种 时 尚。 虽 然 新 闻 界 的 报 导 有 些 言 过 其 实, 但Java作 为 软 件 开 发 的 一 种 革 命 性 的 技 术, 其 地 位 已 被 确 立, 这 表 现 在 以 下 几 个 方 面: 1.计 算 机 产 业 的 许 多 大 公 司 购 买 了 Java的 许 可 证, 包 括IBM,Apple,DEC,Adobe,Silicon Graphics,HP,Oracel,Toshiba, 以 及 最 不 情 愿 的Microsoft。 这 一 点 说 明,Java已 得 到 了 工 业 界 的 认 可。 2.众 多 的 软 件 开 发 商 开 始 支 持Java的 软 件 产 品。 例 如:Borland公 司 正 在 开 发 的 基 于Java的 快 速 应 用 程 序 开 发 环 境Latte, 预 计 产 品 会 在1996年 中 期 发 布。Borland公 司 的 这 一 举 措, 推 动 了Java进 入PC机 软 件 市场。Sun公 司 自 己 的Java开 发 环 境Java Workshop已 经 发 布。 数 据 库 厂 商 如:Illustra,Sysbase,Versant,Oracle都 在 开 发CGI接 口, 支 持HTML和Java。 今 天 是 以 网 络 为 中 心 的 计 算 时 代, 不 支 持HTML和Java, 应 用 程 序 的 应 用 范 围 只 能 限 于 同 质 的 环 境(相 同 的 硬 件 平 台)。 3.Intranet正 在 成 为 企 业 信 息 系 统 最 佳 的 解 决 方 案, 而 其 中Java将 发 挥 不 可 替 代 的 作 用。Intranet的 目 的 是 把Internet用 于 企 业 内 部 的 信 息 系 统, 它 的 优 点 表 现 在: 便 宜, 易 于 使 用 和 管 理。 用 户 不 管 使 用 何 种 类 型 的 机 器 和 操 作 系 统, 界 面 是 统 一 的Intrnet浏 览 器, 而 数 据 库、Web页 面、 应 用 程 序(用Java编 的Applet)则 存 在WWW服 务 器 上, 无 论 是 开 发 人 员, 还 是 管 理 人 员, 抑 或 是 用 户 都 可 以 受 益 于 该 解 决 方 案。 Java语 言 正 在 不 断 发 展 和 完 善,Sun公 司 是 主 要 的 发 展 推 动 者, 较 通 用 的 编 译 环 境 有JDK(Java Develop Kit)与JWS(Java Workshop)。 还 有 很 多 其 他 公 司 正 在 开 发Java语 言 的 编 译 器 与 集 成 环 境, 预 计 不 久Java语 言 的 正 确 性 与 效 率 都 将 会 提 高, 用 户 用Java编 程 和 现 在 用C++编 程 一 样 方 便。 1.2 Java语 言 的 特 点   Java到 底 是 一 种 什 么 样 的 语 言 呢? Java是 一 种 简 单 的 面 象 对 象 的 分 布 式 的 解 释 的 健 壮 的 安 全 的 结 构 中 立 的 可 移 植 的 性 能 很 优 异 的 多 线 程 的 动 态 的 语 言。 1.2.1 简 单   Java最 初 是 为 对 家 用 电 器 进 行 集 成 控 制 而 设 计 的 一 种 语 言, 因 此 它 必 须 简 单 明 了。Java语 言 的 简 单 性 主 要 体 现 在 以 下 三 个 方 面: 1. Java的 风 格 类 似 于C++, 因 而C++程 序 员 是 非 常 熟 悉 的。 从 某 种 意 义 上 讲,Java语 言 是C及C++语 言 的 一 个 变 种, 因 此,C++程 序 员 可 以 很 快 就 掌 握Java编 程 技 术。 2. Java摒 弃 了C++中 容 易 引 发 程 序 错 误 的 地 方, 如 指 针 和 内 存 管 理。 3. Java提 供 了 丰 富 的 类 库。 1.2.2 面 向 对 象   面 向 对 象 可 以 说 是Java最 重 要 的 特 性。Java语 言 的 设 计 完 全 是 面 向 对 象 的, 它 不 支 持 类 似C语 言 那 样 的 面 向 过 程 的 程 序 设 计 技 术。Java支 持 静 态 和 动 态 风 格 的 代 码 继 承 及 重 用。 单 从 面 向 对 象 的 特 性 来 看,Java类 似 于SmallTalk, 但 其 它 特 性、 尤 其 是 适 用 于 分 布 式 计 算 环 境 的 特 性 远 远 超 越 了SmallTalk。 1.2.3 分 布 式   Java包 括 一 个 支 持HTTP和FTP等 基 于TCP/IP协 议 的 子 库。 因 此,Java应 用 程 序 可 凭 借URL打 开 并 访 问 网 络 上 的 对 象, 其 访 问 方 式 与 访 问 本 地 文 件 系 统 几 乎 完 全 相 同。 为 分 布 环 境 尤 其 是Internet提?copy;动 态 内 容 无 疑 是 一 项 非 常 宏 伟 的 任 务, 但Java的 语 法 特 性 却 使 我 们 很 容 易 地 实 现 这 项 目 标。 1.2.4 健 壮   Java致 力 于 检 查 程 序 在 编 译 和 运 行 时 的 错 误。 类 型 检 查 帮 助 检 查 出 许 多 开 发 早 期 出 现 的 错 误。Java自 已 操 纵 内 存 减 少 了 内 存 出 错 的 可 能 性。Java还 实 现 了 真 数 组, 避 免 了 覆 盖 数 据 的 可 能。 这 项 功 能 特 征 大 大 缩 短 了 开 发Java应 用 程 序 的 周 期。 Java提 供Null指 针 检 测 数 组 边 界 检 测 异 常 出 口 字 节 代 码 校 验 1.2.5 结 构 中 立   另 外, 为 了 建 立Java作 为 网 络 的 一 个 整 体,Java将 它 的 程 序 编 译 成 一 种 结 构 中 立 的 中 间 文 件 格 式。 只 要 有 Java运 行 系 统 的 机 器 都 能 执 行 这 种 中 间 代 码。 现 在,Java运 行 系 统 有Solaris2.4(SPARC),Win32系 统(Windows95和Windows NT)等. Java源 程 序 被 编 译 成 一 种 高 层 次 的 与 机 器 无 关 的byte-code格 式 语 言, 这 种 语 言 被 设 计 在 虚 拟 机 上 运 行, 由 机 器 相 关 的 运 行 调 试 器 实 现 执 行。 1.2.6 安 全   Java的 安 全 性 可 从 两 个 方 面 得 到 保 证。 一 方 面, 在Java语 言 里, 象 指 针 和 释 放 内 存 等C++功 能 被 删 除, 避 免 了 非 法 内 存 操 作。 另 一 方 面, 当Java用 来 创 建 浏 览 器 时, 语 言 功 能 和 一些浏 览 器 本 身 提 供 的 功 能 结 合 起 来, 使 它 更 安 全。 Java语 言 在 你 的 机 器 上 执 行 前, 要 经 过 很 多 次 的 测 试。 它 经 过 代 码 校 验, 检 查 代 码 段 的 格 式, 检 测 指 针 操 作, 对 象 操 作 是 否 过 分 以 及 试 图 改 变 一 个 对 象 的 类 型。 1.2.6.1 Byte-code校 验   如 果byte-code通 过 代 码 校 验, 没 有 返 回 错 误, 我 们 可 知 道: 代 码 没 有 堆 栈 上 溢 出 和 下 溢 出 所 有 操 作 代 码 参 数 类 型 都 是 正 确 的 没 有 发 生 非 法 数 据 转 换, 如 将 整 数 转 换 成 指 针。 访 问 对 象 操 作 是 合 法 的 1.2.6.2 类 装 载   Class Loader通 过 将 本 机 类 与 网 络 资 源 类 的 名 称 分 开, 来 保 持 安 全 性。 因 为 调 入 类 时 总 要 经 过 检 查, 这 样 避 免 了 特 洛 伊 木 马 现 象 的 出 现。 从 网 络 上 下 载 的 类 被 调 进 一 个 与 源 相 关 的 私 有 的 名 字 域。 当 一 个 私 有 类 访 问 另 一 个 类 时,build-in(本 机 类)首 先 被 检 查, 然 后 检 查 相 关 的 类。 这 样 就 避 免 了 破 坏 本 机 类 情 况 的 出 现。 1.2.7 可 移 植 的   同 体 系 结 构 无 关 的 特 性 使 得Java应 用 程 序 可 以 在 配 备 了Java解 释 器 和 运 行 环 境 的 任 何 计 算 机 系 统 上 运 行, 这 成 为Java应 用 软 件 便 于 移 植 的 良 好 基础。 但 仅 仅 如 此 还 不 够。 如 果 基 本 数 据 类 型 设 计 依 赖 于 具 体 实 现, 也 将 为 程 序 的 移 植 带 来 很 大 不 便。 例 如 在Windows 3.1中 整 数(Integer)为16bits, 在Windows 95中 整 数 为32bits, 在DEC Alpha中 整 数 为64bits, 在Intel 486中 为32bits。 通 过 定 义 独 立 于 平 台 的 基 本 数 据 类 型 及 其 运 算,Java数 据 得 以 在 任 何 硬 件 平 台 上 保 持 一 致。Java语 言 的 基 本 数 据 类 型 及 其 表 示 方 式 如 下: byte 8-bit 二 进 制 补 码 short 16-bit 二 进 制 补 码 int 32-bit 二 进 制 补 码 long 64-bit 二 进 制 补 码 float 32-bit IEEE 754浮点 数 double 32-bit IEEE 754浮点 数 char 16-bit Unicode字 符。   在 任 何Java解 释 器 中, 数 据 类 型 都 是 依 据 以 上 标 准 具 体 实 现 的。 因 为 几 乎 目 前 使 用 的 所 有CPU都 能 支 持 以 上 数 据 类 型、8~64位 整 数 格 式 的 补 码 运 算 和 单/双 精 度浮点 运 算。 Java编 译 器 本 身 就 是 用Java语 言 编 写 的。Java运 算 系 统 的 编 制 依 据POSIX方 便 移 植 的 限 制, 用ANSI C语 言 写 成。Java语 言 规 范 中 也 没 有 任 何\"同 具 体 实 现 相 关\"的 内 容。 1.2.8 解 释 的   Java解 释 器(运 行 系 统)能 直 接 运 行 目 标 代 码 指 令。 链 接 程 序 通 常 比 编 译 程 序 所 需 资 源 少, 所 以 程 序 员 可 以 在 创 建 源 程 序 上 花 上 更 多 的 时 间。 1.2.9 高 性 能   如 果 解 释 器 速 度 不 慢,Java可 以 在 运 行 时 直 接 将 目 标 代 码 翻 译 成 机 器 指 令。Sun用 直 接 解 释 器 一 秒 钟 内 可 调 用300,000个 过 程。 翻 译 目 标 代 码 的 速 度 与C/C++的 性 能 没 什 么 区 别。 1.2.10 多 线 程 Java提?copy;的 多 线 程 功 能 使 得 在 一 个 程 序 里 可 同 时 执 行 多 个 小 任 务。 线 程 - - 有 时 也 称 小 进 程 - - 是 一 个 大 进 程 里 分 出 来 的 小 的 独 立 的 进 程。 因 为Java实 现 的 多 线 程 技 术, 所 以 比C和C++更 键 壮。 多 线 程 带 来 的 更 大 的 好 处 是 更 好 的 交 互 性 能 和 实 时 控 制 性 能。 当 然 实 时 控 制 性 能 还 取 决 于 系 统 本 身(UNIX,Windows,Macintosh等), 在 开 发 难 易 程 度 和 性 能 上 都 比 单 线 程 要 好。 任 何 用 过 当 前 浏 览 器 的 人, 都 感 觉 为 调 一 副 图 片 而 等 待 是 一 件 很 烦 恼 的 事 情。 在Java里, 你 可 用 一 个 单 线 程 来 调 一 副 图 片, 而 你 可 以 访 问HTML里 的 其 它 信 息 而 不 必 等 它。 1.2.11 动 态   Java的 动 态 特 性 是 其 面 向 对 象 设 计 方 法 的 发 展。 它 允 许 程 序 动 态 地 装 入 运 行 过 程 中 所 需 要 的 类, 这 是C++语 言 进 行 面 向 对 象 程 序 设 计 所 无 法 实 现 的。 在C++程 序 设 计 过 程 中, 每 当 在 类 中 增 加 一 个 实 例 变 量 或 一 种 成 员 函 数 后, 引 用 该 类 的 所 有 子 类 都 必 须 重 新 编 译, 否 则 将 导 致 程 序 崩 溃。Java从 如 下 几 方 面 采 取 措施来 解 决 这 个 问 快递公司问题件快递公司问题件货款处理关于圆的周长面积重点题型关于解方程组的题及答案关于南海问题 。Java编 译 器 不 是 将 对 实 例 变 量 和 成 员 函 数 的 引 用 编 译 为 数 值 引 用, 而 是 将 符 号 引 用 信 息 在 字 节 码 中 保 存 下 传 递 给 解 释 器, 再 由 解 释 器 在 完 成 动 态 连 接 类 后, 将 符 号 引 用 信 息 转 换 为 数 值 偏 移 量。 这 样, 一 个 在 存 储 器 生 成 的 对 象 不 在 编 译 过 程 中 决 定, 而 是 延 迟 到 运 行 时 由 解 释 器 确 定 的。 这 样, 对 类 中 的 变 量 和 方 法 进 行 更 新 时 就 不 至 于 影 响 现 存 的 代 码。 解 释 执 行 字 节 码 时, 这 种 符 号 信 息 的 查 找 和 转 换 过 程 仅 在 一 个 新 的 名 字 出 现 时 才 进 行 一 次, 随 后 代 码 便 可 以 全 速 执 行。 在 运 行 时 确 定 引 用 的 好 处 是 可 以 使 用 已 被 更 新 的 类, 而 不 必 担 心 会 影 响 原 有 的 代 码。 如 果 程 序 连 接 了 网 络 中 另 一 系 统 中 的 某 一 类, 该 类 的 所 有 者 也 可 以 自 由 地 对 该 类 进 行 更 新, 而 不 会 使 任 何 引 用 该 类 的 程 序 崩 溃。 Java还 简 化 了 使 用 一 个 升 级 的 或 全 新 的 协 议 的 方 法。 如 果 你 的 系 统 运 行Java程 序 时 遇 到 了 不 知 怎 样 处 理 的 程 序, 没 关 系,Java能 自 动 下 载 你 所 需 要 的 功 能 程 序。 1.3 与C和C++语 言 的 异 同   Java提 供 了 一 个 功 能 强 大 语 言 的 所 有 功 能, 但 几 乎 没 有 一 点 含 混 特 征。C++安 全 性 不 好, 但C和C++还 是 被 大 家 所 接 受, 所 以Java设 计 成C++形 式, 让 大 家 很 容 易 学 习。Java去 掉 了C++语 言 的 许 多 功 能, 让Java的 语 言 功 能 很 精 炼, 并 增 加 了 一些很 有 用 的 功 能, Java去 掉 了 以 下 几 个C和C++功 能 和 特 征: 指 针 运 算 结 构 typedefs #define 需 要 释 放 内 存 全 局 变 量 的 定 义 这个功 能 都 是 很 容 易 引 起 错 误 的 地 方。 1.4 Java的 应 用 简 介 1.4.1 Web浏 览   Web浏 览 是 现 在 国 际 网 甚 至 局 域 网 的 主 要 使 用 方 式。 文 档 能 很 容 易 地 显 示 文 本 和 各 种 图 片, 他 还 能 提 供 超 文 本 链 接。 这 些 浏 览 器 调 用HTML语 言 写 的 文 档,HTML/WWW浏 览 器 技 术 只 限 于 文 本 和 图 象。 如 果 你 想 播 放 一 种 声 音 或 运 行 一 个 演 示 程 序, 你 不 得 不 下 载 那 个 文 件 并 用 你 本 机 上 的 能 理 解 和 运 行 那 个 文 件 格 式 的 程 序 来 播 放 它。 Java程 序 和 它 的 浏 览 器HotJava, 提 供 了 可 让 你 的 浏 览 器 运 行 程 序 的 方 法。 你 能 从 你 的 浏 览 器 里 直 接 播 放 声 音。 你 还 能 播 放 页 面 里 的 动 画。Java还 能 告 诉 你 的 浏 览 器 怎 样 处 理 新 的 类 型 文 件。 当 我 们 能 在2400 baud线 上 传 输 视 频 图 象 时,HotJava将 能 显 示 这 些 视 频。 1.4.2 网 络 应 用 系 统   Java是 一 种 与 平 台 无 关 的 语 言, 因 此 用Java开 发 的 网 络 应 用 系 统 可 以 在 各 种 平 台 上 运 行, 大 大 增 加 了 开 发 效 率, 减 少 重 复 劳 动。 而 且,Java集 成 的 网 络 功 能 分 有 利 于 开 发 网 络 应 用 系 统。 本 章 小 结:   1.Java的 产 生 与 流 行 是 当 今internet发 展 的 客 观 要 求。   2.java是 一 门 各 方 面 性 能 都 很 好 的 编 程 语 言, 它 的 基 本 特 点 是 简 单、 面 象 对 象、 分 布 式、 解 释 的、健 壮 的、 安 全 的、 结 构 中 立 的、 可 移 植 的、 性 能 很 优 异 的、 多 线 程 的、 动 态 的。分 适 合 在internet环 境 上 开 发 应 用 系 统。   3.java可 以 制 作 大 部 分 网 络 应 用 程 序 系 统, 而 且 与 当 今 流 行 的WWW浏 览 器 结 合 得 很 好。 第 二 章 Java程 序 开 发 与 运 行 环 境 2.1 JDK环 境   Java不 仅 提供了 一 个 丰 富 的 语 言 和 运 行 环 境, 而 且 还 提供了 一 个 免 费 的Java开 发 工 具 集(Java Developers Kits, 简 称JDK)。 编 程 人 员 和 最 终 用 户 可 以 利 用 这 些 工 具 来 开 发java程 序 或 调 用Java 内 容。JDK包 括 以 下 工 具: javac Java语 言 编 译 器, 输 出 结 果 为Java字 节 码 java Java字 节 码 解 释 器 javap Disassembeler: Java字 节 码 分 解 程 序, 本 程 序 返 回Java程 序 的 成 员 变 量 及 方 法 等 信 息。 javaprof 资 源 分 析 工 具, 用 于 分 析Java程 序 在 运 行 过 程 中 调 用 了 哪 些 资 源, 包 括 类 和 方 法 的 调 用 次 数 和 时 间, 以 及 各 数 据 类 型 的 内 存 使 用 情 况 等。 javah C代 码 处 理 工 具, 用 于 从Java类 调 用C++代 码 java Applet Viewer 小 应 用 程 序 浏 览 工 具, 用 于 测 试 并 运 行Java小 应 用 程 序 java Debugger API Java调 试 工 具API Prototype Debugger Java调 试 工 具 原 型 Java开 发 环 境 还 包 括Java类 库(包 括I/O类 库、 用 户 界 面 类 库、 网 络 类 库 等)和HotJava WWW 浏 览 器。 其 中,HotJava浏 览 器 提 供 了 在WWW环 境 下 运 行Java代 码 的 一 个 运 行 系 统, 而 且 还 为WWW开 发 人 员 提 供 了 一 个Java开 发 框 架。Java解 释 器 是 面 向 Java程 序 的 一 个 独 立 运 行 系 统, 它 可 以 一 种 稳 定、 高 性 能 方 式 运 行 那 些 独 立 于 平 台 的Java字 节 码,Java编 译 器 则 用 于 生 成 这 些 字 节 码。 2.1.1 Java程 序 的 编 译   Java程 序 的 编 译 程 序 是javac.exe。javac命 令 将Java程 序 编 译 成 字 节 码, 然 后 你 可 用java解 释 器java命 令 来 解 释 执 行 这 些Java字 节 码。Java程 序 源 码 必 须 存 放 在 后 缀 为.java的 文 件 里。Java 程 序 里 的 每 一 个 类,javac都 将 生 成 与 类 相 同 名 称 但 后 缀 为.class文 件。 编 译 器 把.class文 件 放 在.java文 件 的 同 一 个 目 录 里, 除 非 你 用 了-d选 项。 当 你 引 用 到 某些自 己 定 义 的 类 时, 必 须 指 明 它 们 的 存 放 目 录, 这 就 需 要 利 用 环 境 变 量 参 数 CLASSPATH。 环 境 变 量CLASSPATH是 由 一 些 被 分 号 隔 开 的 路 径 名 组 成。 如 果 传 递 给javac编 译 器 的 源 文 件 里 引 用 到 的 类 定 义 在 本 文 件 和 传 递 的 其 它 文 件 中 找 不 到, 则 编 译 器 会 按 CLASSPATH定 义 的 路 径 来 搜 索。 例 如: CLASSPATH = .;C:\\java\\classes 则 编 译 器 先 搜 索 当 前 目 录, 如 果 没 搜 索 到, 则 继 续 搜 索C:\\java\\classes目 录。 注 意, 系 统 总 是 将 系 统 类 的 目 录 缺 省 地 加 在CLASSPATH后 面, 除 非 你 用 -classpath选 项 来 编 译。 javac_g 是 一 个 用 于 调 试 的 未 优 化 的 编 译 器, 功 能 与 用 法 和javac一 样。 javac的 用 法 如 下: javac [-g][-O][-debug][-depend][-nowarn][-verbose][-classpath path][-nowrite][-d dir] file.java... 以 下 是 每 个 选 项 的 解 释。 选 项 解 释:   -classpath path 定 义javac搜 索 类 的 路 径。 它 将 覆 盖 缺 省 的CLASSPATH环 境 变 量 的 设 置。 路 径 是 由 一 些 由 逗 号 隔 开 的 路 径 名 组 成, 一 般 格 式 如 下: .; 例 如: .;C:\\java\\doc\\classes;C:\\tools\\java\\classes 表 示 编 译 器 遇 到 一 个 新 类, 它 先 在 本 文 件 中 查 找 它 的 定 义, 如 果 没 有, 则 在 本 文 件 所 处 目 录 下 其 它 文 件 中 查 找 它 的 定 义, 如 果 还 没 有, 则 继 续 搜 索C:\\java\\doc\\classes目 录 中 的 所 有 文 件, 以 此 类 推。   -d directory 指 明 类 层 次 的 根 目 录, 格 式 如 下:javac -d MyProgram.java 这 样 将MyProgram.java程 序 里 的 生 产 的.class文 件 存 放 在my_dir目 录 里.   -g 带 调 试 信 息 编 译, 调 试 信 息 包 括 行 号 与 使 用java调 试 工 具 时 用 到 的 局 部 变 量 信 息。 如 果 编 译 没 有 加 上-O优 化 选 项, 只 包 含 行 号 信 息。   -nowarn 关 闭 警 告 信 息, 编 译 器 将 不 显 示 任 何 警 告 信 息。   -O 优 化 编 译static,final,private函 数, 注 意 你 的 类 文 件 可 能 更 大。   -verbose 让 编 译 器 与 解 释 器 显 示 被 编 译 的 源 文 件 名 和 被 加 载 的 类 名。 环 境 变 量   CLASSPATH 用 来 提?copy;给 系 统 搜 索 用 户 定 义 的 类 的 缺 省 路 径。 各 路 径 由 分 号 隔 开, 例 如:.;C:\\java\\doc\\classes;C:\\tools\\java\\classes 表 示 编 译 器 遇 到 一 个 新 类, 它 先 在 本 文 件 中 查 找 它 的 定 义, 如 果 没 有, 则 在 本 文 件 所 处 目 录 下 其 它 文 件 中 查 找 它 的 定 义, 如 果 还 没 有, 则 继 续 搜 索C:\\java\\doc\\classes目 录 中 的 所 有 文 件, 以 此 类 推。 2.1.2 Java程 序 的 调 试 使 用java调 试 器   jdb导 游 在 早 期 前Betal版 的Java调 试 器jdb是 命 令 行 形 式 的, 如 用Sun公 司 的dbx调 试 器。 用jdb来 调 试Java应 用 程 序, 在 调 试 前, 要 确 证 你 的 应 用 程 序 是 带 标 志 -g编 译 的。 例 如: javac -g HelloWorld.java help命 令 将 显 示jdb 里 的 可 用 命 令 列 表。   >help <命 令 列 表> threads [threadgroup]--列 出 线 程 thread - - 设 置 缺 省 线 程 Suspend [threads id(s)]- - 将 线 程 挂 起 resume [thread id(s)]- - 重 新 启 动 线 程 where [id] |a1|- - 打 印 线 程 的 堆 栈 threadgroups--列 出 线 程 组 号 threadgroup -- 设 置 当 前 线 程 组 print [id(s)]- - 打 印 对 象 或 域 dump [id(s)]- - 打 印 所 有 对 象 信 息 locals- - 打 印 当 前 堆 栈 所 有 局 部 变 量 classes- - 列 出 当 前 所 知 的 类 methods - - 列 出 一 个 类 的 成 员 函 数 stop in .- - 在 一 个 成 员 函 数 里 设 置 断 点 stop at :- - 在 一 行 里 设 置 断 点 up [n frames]- - 在 线 程 堆 栈 里 往 上 移 down [n frames]- - 在 线 程 堆 栈 里 往 下 移 clear :- - 清 除 一 个 断 点 step - - 执 行 当 前 行 cont- - 从 断 点 处 继 续 执 行 catch - - 为 指 定 的 情 况 中 断 ignor - - 为 指 定 的 情 况 忽 略 list [line number]- - 打 印 源 程 序 use [Sourcefile path]- - 显 示 或 改 变 源 路 径 memeory- - 报 告 内 存 使 用 情 况 load classname- - 加 载Java类 以 便 调 试 run - - 开 始 执 行 加 载 的 类 !!- - 重 复 以 上 的 命 令 help(?)- - 列 出 所 有 的 命 令 exit( or quit)- - 离 开 调 试 器 2.1.3 Java程 序 的 执 行   java - java语 言 解 释 器 java命 令 解 释java 字 节 码 语 法: java [ options ] classname java_g [ options ] classname   描 述: java命 令 由java编 译 器javac输 出 的Java字 节 码。 classname参 数 是 要 执 行 的 类 名 称。 注 意 任 意 在 类 名 称 后 的 参 数 都 将 传 递 给 要 执 行 类 的main 函 数。 java执 行 完main函 数 后 推 出, 除 非main函 数 创 建 了 一 个 或 多 个 线 程。 如 果main函 数 创 建 了 其 它 线 程,java总 是 等 到 最 后 一 个 线 程 推 出 才 推 出。 选 项:   -cs, -checksource 当 一 个 编 译 过 的 类 调 入 时, 这 个 选 项 将 比 较 字 节 码 更 改 时 间 与 源 文 件 更 改 时 间, 如 果 源 文 件 更 改 时 间 靠 后, 则 重 新 编 译 此 类 并 调 入 此 新 类。   -classpath path 定 义javac搜 索 类 的 路 径。 它 将 覆 盖 缺 省 的CLASSPATH环 境 变 量 的 设 置。 路 径 是 由 一?copy;由 逗 号 隔 开 的 路 径 名 组 成, 一 般 格 式 如 下: .; 例 如:.;C:\\java\\doc\\classes;C:\\tools\\java\\classes 表 示 解 释 器 遇 到 一 个 新 类, 它 先 在 本 文 件 中 查 找 它 的 定 义, 如 果 没 有, 则 在 本 文 件 所 处 目 录 下 其 它 文 件 中 查 找 它 的 定 义, 如 果 还 没 有, 则 继 续 搜 索C:\\java\\doc\\classes目 录 中 的 所 有 文 件, 以 此 类 推。   -mx x 设 置 最 大 内 存 分 配 池, 大 小 为x,x必 须 大 于1000bytes。 缺 省 为16兆。   -ms x 设 置 垃 圾 回 收 堆 的 大 小 为x,x必 须 大 于1000bytes。 缺 省 为1兆。   -noasyncgc 关 闭 异 步 垃 圾 回 收 功 能。 此 选 项 打 开 后, 除 非 显 式 调 用 或 程 序 内 存 溢 出, 垃 圾 内 存 都 不 回 收。 本 选 项 不 打 开 时, 垃 圾 回 收 线 程 与 其 它 线 程 异 步 同 时 执 行。   -ss x 每 个Java线 程 有 两 个 堆 栈, 一 个 是java代 码 堆 栈, 一 个 是C代 码 堆 栈。-ss选 项 将 线 程 理C代 码 用 的 堆 栈 设 置 成 最 大 为x。   -oss x 每 个Java线 程 有 两 个 堆 栈, 一 个 是java代 码 堆 栈, 一 个 是C代 码 堆 栈。-oss选 项 将 线 程 理java代 码 用 的 堆 栈 设 置 成 最 大 为x。   -v, -verbose 让java解 释 器 在 每 一 个 类 被 调 入 时, 在 标 准 输 出 打 印 相 应 信 息。 环 境 变 量   CLASSPATH 用 来 提?copy;给 系 统 搜 索 用 户 定 义 的 类 的 缺 省 路 径。 各 路 径 由 分 号 隔 开, 例 如: .;C:\\java\\doc\\classes;C:\\tools\\java\\classes 表 示 解 释 器 遇 到 一 个 新 类, 它 先 在 本 文 件 中 查 找 它 的 定 义, 如 果 没 有, 则 在 本 文 件 所 处 目 录 下 其 它 文 件 中 查 找 它 的 定 义, 如 果 还 没 有, 则 继 续 搜 索C:\\java\\doc\\classes目 录 中 的 所 有 文 件, 以 此 类 推。 2.2 JWS环 境   Java WorkShop是SUN公 司 的 一 个 新 产 品,它 是 一 个 集 成 的java语 言 开 发 环 境, 它 包 括 以 下 工 具: l Portfolio 和Project管 理 器 l 源 文 件 编 辑 器 l Build管 理 工 具 l 调 试 器 l 项 目 测 试 l ?copy;展 在 线 超 文 本 连 接 到 帮 助 文 件 这?copy;工 具 在Java WorkShop的 第 一 页 都 有 类 似Web页 面 的 超 级 连 接, 如 图: 注 意,Java WorkShop采 用 的 是 当 今 浏 览 器 的 界 面 风 格, 你 想 作 什 么, 只 需 找 到 相 应 的 超 级 连 接 就 可 以 了, 具 体 编 译 及 调 试 功 能 是 用 嵌 如 到HTML文 档 里 的Applet实 现 的, 因 此, 对 习 惯 于 用internet浏 览 方 式 的 用 户 来 说, 这 种 界 面 很 容 易 接 受。 2.2.1 Portfolio 和Project管 理 器   Protfolios是 一些java应 用 程 序 或Applet的 集 中。 它 让 你 更 好 的 管 理 更 多 的projects。 一 个project是portfolio里 的 一 个 子 集, 它 包 含 了 以 下 信 息: 1. 怎 样 编 译 本 项 目 2. 怎 样 调 试 和 浏 览 本 项 目 3. 怎 样 运 行 本 项 目 4. 怎 样 发 布 本 项 目 2.2.2 源 文 件 编 辑 器   源 文 件 编 辑 器 可 以 从build管 理 器、 调 试 器 和 源 文 件 浏 览 器 里 的 超 级 连 接 进 入。 在 这 个 模 块 里, 你 可 以 输 入 源 文 件。 2.2.3 Build管 理 工 具   本 模 块 是 项 目 的 编 译 器, 你 可 以 点build按 钮 直 接 进 入 本 模 块, 如 果 某 个 文 件 出 错, 错 误 信 息 会 提 供 一 个 超 级 连 接, 直 接 指 到 出 错 的 源 文 件 地 点。 2.2.4 Visul Java(图 形 界 面 构 造)   顾 名 思 义, 本 模 块 能 让 你 可 视 化 建 造 一个复 杂 界 面, 如 果 你 用 过Visual Basic, 你 会 发 现 它 们 很 相 似。 2.2.5 调 试 器   调 试 器 能 让 你 很 方 便 地 跟 踪 程 序 的 执 行 与 发 现 程 序 的 错 误。 本 章 小 结:   Java语 言 有 两 个 开 发 环 境, 一 个 是 免 费 的JDK, 是 命 令 行 方 式 的。 还 有 一 个Java WorkShop, 是 开 发java程 序 的 集 成 环 境。 本 章 简 要 介 绍 了 它 们 的 使 用 方 法。 第 三 章 Java程 序 设 计 基 础 3.1 Java编 程 概 况   现 在 你 可 以 复 习 一 下Java语 言 的 背 景 材 料, 它 的 基 本 结 构 象C/C++, 但 任 何 用 面 向 过 程 语 言 编 写 过 程 序 的 人 都 可 以 了 解Java语 言 的 大 部 分 结 构. 3.1.1 程 序 结 构   Java语 言 的 源 程 序 代 码 由 一 个 或 多 个 编 译 单 元(compilation unit)组 成, 每 个 编 译 单 元 只 能 包 含 下 列 内 容(空 格 和 注 释 除 外): * 一 个 程 序 包 语 句(package statement ) * 入 口 语 句(import statements) * 类 的 声 明(class declarations) * 界 面 声 明(interface declarations) 每 个Java的 编 译 单 元 可 包 含 多 个 类 或 界 面, 但 是 每 个 编 译 单 元 最 多 只 能 有 一 个 类 或 者 界 面 是 公 共 的。 Java 的 源 程 序 代 码 被 编 译 ?reg; 后, 便 产 生 了Java字 节 代 码。Java的 字 节 代 码 由 一 ?copy; 不 依 赖 于 机 器 的 指 令 组 成, 这 ?copy; 指 令 能 被Java的 运 行 系 统(runtime system)有 效 地 解 释。Java的 运 行 系 统 工 作 起 来 如 同 一 台 虚 拟 机。 在 当 前 的Java实 现 中, 每 个 编 译 单 元 就 是 一 个 以.java为 后 缀 的 文 件。 每 个 编 译 单 元 有 若 干 个 类, 编 译 后, 每 个 类 生 成 一 个.class文 件。.class文 件 是Java虚 拟 机 能 够 识 别 的 代 码。 3.1.2 注 释   三 种 类 型 如 下: //注 释 一 行 /*一 行 或 多 行 注 释*/ /**文 档 注 释**/ 文 档 注 释 一 般 放 在 一 个 变 量 或 函 数 定 义 ?reg; 前,指 示 在 任 何 自 动 生 成 文 档 系 统 中 调 入。 这 ?copy; 注 释 都 是 声 明 条 目 的 描 述.。 3.1.3 标 识 符   变 量, 函 数, 类 和 对 象 的 名 称 都 是 标 识 符, 程 序 员 需 要 标 识 和 使 用 的 东 西 都 需 要 标 识 符。 在Java语 言 里,标 识 符 以 字 符 或_,$开 头,后 面 可 以 包 含 数 字, 标 识 符 是 大 小 写 有 区 别 的,没 有 长 度 限 制。   有 效 的 标 识 符 myname ict_network Hello _sys_path $bill   例 子: int a_number; char _onechar; float $bill;   关 键 词 abstract continue for new switch boolean default goto null synchronized break do if package this byte double implements private threadsafe byvalue else import protected throw case extends instanceof public transient catch false int return true char final interface short try class finally long static void const float native super while 其 它 保 留 词 以 下 单 词 被 保 留 使 用: cast future generic inner operator outer rest var 3.1.4 数 据 类 型   Java使 用 五 种 基 本 类 型:integer(整 数),floating(浮点 数),point(指 针),Boolean(布 尔 变 量),Character or String(字 符 或 字 符 串)。 integer 整 数 下 边 给 出 的 数 据 表 示 都 是 整 数 的 例 子: 4 , 15 , 089 , 0xAD00 整 数 长 度 数 据 类 型 表 示 8 bits byte 16 bits short 32 bits int 64 bits long   floating 浮点 数 下 边 给 出 的 数 据 表 示 都 是浮点 数 的 例 子: 6.37 , 3.7E15 , 3e8   浮点 数 长 度 数 据 类 型 表 示 32 bits float 64 bits double   Boolean 布 尔 变 量 下 边 是 布 尔 变 量 的 两 种 可 能 取 值: true false Character 字 符 下 边 给 出 的 都 是 字 符 的 例 子: a \\t (tab) \\u????(unicode)   String 字 符 串 下 边 给 出 的 都 是 字 符 串 的 例 子: \"This is a string literal\" \"中 国 科 学 院 计 算 所\" 数 组 你 可 以 定 义 任 意 类 型 的 数 组. char s[]; 这 是 字 符 型 数 组; int [] array; 这 是 整 型 数 组; 你 还 可 以 定 义 数 组 的 数 组. int block[][]=new int [2][3]; 数 组 边 界 在 运 行 时 被 检 测,避 免 堆 栈 溢 出 和 内 存 崩 溃.   在Java里,数 组 实 际 上 是 一 个 对 象,数 组 有 一 个 成 员 变 量:length。 你 可 以 用 这 个 成 员 函 数 来 查 看 任 意 数 组 的 长 度. int a[][] = new int [10][3] a.length /* 10 */ a[0].length /* 3 */ 创 建 数 组 在Java里 创 建 数 组,你 可 使 用 两 种 基 本 方 法 : 一。 创 建 一 个 空 数 组: int list[]=new int[50]; 或 你 可 以 用 初 始 数 值 填 充 数 组. String names[] = { \"Chenji\",\"Yuan\",\"Chun\",\"Yang\" }; 相 当 于 下 面 功 能: String names[]; names = new String[4]; names[0]=new String(\"Chenji\"); names[1]=new String(\"Yuan\"); names[2]=new String(\"Chun\"); names[3]=new String(\"Yang\"); 在 编 译 时 你 不 能 象 下 例 那 样 创 建 静 态 数 组。 int name[50];//将 产 生 一 个 编 译 错 误 你 也 不 能 用new操 作 去 填 充 一 个 没 定 义 大 小 的 数 组。 int name[]; for (int i=0;i<9;i++) { name[i] = i; } 3.1.5 表 达 式   Java语 言 的 表 达 式 和C语 言 非 常 类 似。 运 算 符 运 算 符(operator)优 先 级 从 高 到 底 排 列 如 下: . [ ] () ++ -- ! ~ instanceof * / % + - << >> >>> < > <= >\\ == ! = & ^ && || ? : = op = , 整 数 运 算 符 在 整 数 运 算 时, 如 果 操 作 数 是long类 型, 则 运 算 结 果 是long类 型, 否 则 为int类 型, 绝 不 会 是byte,short或char型。 这 样, 如 果 变 量i被 声 明 为short或byte,i+1的 结 果 会 是int。 如 果 结 果 超 过 该 类 型 的 取 值 范 围, 则 按 该 类 型 的 最 大 值 取 模。 单 目 整 数 运 算 符 是: 运 算 符 操 作 - 单 目 非 ~ 位 补 码 ++ 加1 -- 减1 ++运 算 符 用 于 表 示 直 接 加1操 作。 增 量 操 作 也 可 以 用 加 运 算 符 和 赋 值 操 作 间 接 完 成。++ lvalue (左 值?copy; 表 示lvalue+=1, ++lvalue 也 表 示lvalue =lvalue +1 (只 要lvalue没 有 副 作 用)。--运 算 符 用 于 表 示 减1操 作。++和--运 算 符 既 可 以 作 为 前 缀 运 算 符, 也 可 以 做 为 后 缀 运 算 符。 双 目 整 数 运 算 符 是: 运 算 符 操 作** + 加 - 减 * 乘 / 除 % 取 模 & 位 与 | 位 或 ^ 位 异 或 << 左 移 >> 右 移(带 符 号) >>> 添 零 右 移 整 数 除 法 按 零 舍 入。 除 法 和 取 模 遵 守 以 下 等 式: ( a/b ) * b + ( a%b ) == a 整 数 算 术 运 算 的 异 常 是 由 于 除 零 或 按 零 取 模 造 成 的。 它 将 引 发 一 个 算 术 异 常。 下 溢 产 生 零, 上 溢 导 致 越 界。 例 如: 加1超 过 整 数 最 大 值, 取 模 后, 变 成 最 小 值。 一 个op=赋 值 运 算 符, 和 上 表 中 的 各 双 目 整 数 运 算 符 联 用, 构 成 一 个 表 达 式。 整 数 关 系 运 算 符<, >,<=,>=,==和!=产 生boolean类 型 的 数 据。   布 尔 运 算 符 布 尔(boolean)变 量 或 表 达 式 的 组 合 运 算 可 以 产 生 新 的boolean值。 单 目 运 算 符!是 布 尔 非。 双 目
本文档为【java】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_453537
暂无简介~
格式:doc
大小:290KB
软件:Word
页数:51
分类:互联网
上传时间:2011-09-23
浏览量:54