




已阅读5页,还剩23页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Java 语言人门 第 一 章 Java 概 述 1.1 Java 语 言 出 现 的 背 景 、 影 响 及应 用 前 景 1.2 Java 的 特 点 1.3 简 单 的 Java 程 序 第 二 章 数 据 类 型 2.1 数 据 类 型 2.2 常 量 与 变 量 2.3 整 型 数 据 2.4 浮 点 型 (实 型) 数 据 2.5 字 符 型 数 据 2.6 布 尔 型 数 据 2.7 举 例第 三 章 运 算 符 和 表 达式 3.1 算 术 运 算 符 3.2 关 系 运 算 符 3.3 布 尔 逻 辑 运 算 符 3.4 位 运 算 符第 一 章 Java概 述 1.1 Java语 言 出 现 的 背景 、 影 响 及 应 用 前 景一 、 背 景 最 近 一 年 多 来 ,在 Internet上 出 现 的 特 别 吸 引 人 的 事 件 就是 Ja va语 言 和 用 Java编 写 的 浏 览 器 HotJava。 1991年 ,SUN MicroSystem 公 司 的 Jame Gosling、 Bill Joe等 人 , 为 在电视 、 控 制 烤 面 包箱 等 家 用 消 费 类 电 子 产 品 上 进 行 交 互 式操 作 而 开 发 了 一 个 名为 Oak的 软 件 (即一 种 橡 树 的 名 字 ), 但当 时 并 没 有 引 起 人 们 的 注 意 ,直 到 1994年下 半 年 ,Internet的 迅猛发 展 ,环 球 信 息 网 WWW的 快 速 增 长 ,促 进 了 Java 语 言 研 制 的 进展 ,使 得 它 逐 渐 成为 Int ernet上 受 欢 迎 的 开 发 与 编 程 语 言 ,一 些著 名 的 计 算 机 公司 纷 纷 购 买 了 Java 语言 的 使 用 权 , 如 Mi-croSoft、 IBM、 Netscape、 Novell、 Apple、 DEC、 SGI 等,因 此 ,Java 语言 被 美 国 的 著 名 杂 志 PC Magazine 评 为 1995年 十 大 优 秀科 技 产 品,(计 算 机 类 就 此 一项 入 选 ),随 之 大 量 出 现 了 用 Java编写 的 软 件 产 品 ,受 到 工 业 界的 重 视 与 好 评 ,认 为 Java是八 十 年 代 以 来 计 算 机 界 的 一 件 大 事 , 微 软 总 裁 比 尔 盖 茨 在 悄 悄 地 观 察了 一 段 时 间 后 ,不 无感 慨 地 说 :Java是 长 时 间 以 来 最 卓 越 的 程序 设 计 语 言 ,并确 定 微软 整 个 软 件 开 发 的 战 略 从 PC 单 机 时 代 向 着 以 网 络为中 心 的 计 算 时 代 转 移 ,而 购 买 Java则 是 他 的 重 大 战 略 决 策的实施 部 署 。因 此 ,Java的 诞 生 必 将 对 整 个 计 算 机 产 业 发 生 深远的 影 响,对 传 统 的 计 算 模型 提 出 了 新 的 挑 战 。 SUN MicroSystem 公 司 的 总 裁 Scott McNealy认 为 Java为 Internet和WWW开辟 了 一 个崭 新 的 时 代 . 环 球 信 息 网 WWW的 创 始 人 Berners-Lee说 : 计 算 机 事 业 发展 的下 一 个 浪 潮 就是 Java,并 且 将 很 快 会 发 生 的 。看 来 ,使 用 Java已 成 大 势 所 趋 ! MicroSoft 和 IBM 两 大 公 司 都 计 划 在 Internet上 销 售 用 Java 编写的 软 件 。 Apple、 HP、 IBM、 MicroSoft、 Novell、 SGI、 SCO、 Tandem 等 公 司均计 划 将 Java并入 各 自 开 发 的 操 作系 统 ,而 负 责 开 发 并 推 广 Java技 术 的 SunSoft公司 (这 是 SUN下 属的 一 个 子 公 司 ), 将 通 过 颁发 许 可 证 的 办 法 来 允 许 各 家 公 司 把Java虚 拟 机 和 Java的Applets类库 嵌 入 他 们 开 发 的 操 作 系 统 ,这 样 各 类 开 发 人 员 就 能更 容易 地 选 择 多种 平 台 来 使 用 Java语 言 编 程 ,不 同 的 用 户 也 就 可以 脱 离 Web浏 览器 来 运 行 Java应 用程 序 ,这 无 疑 是 很 受 广 大 用户 欢 迎 的 ,也 为 Java语 言 的 应 用 开 拓了极为 广 阔 的 前景 。 (当然 ,各 类 JavaOS之 间 的 兼 容 性 必 须 得 到 重 视 ,好 在JavaSoft已 保证 将 监 督 这种 兼 容 性 )。 另 外 ,由 JavaSoft 推 出 的 完 全 用 Java编 写 的 Internet上 新 型 浏览器 HotJava,比 去 年alpha版 更 为 实 用 ,不 仅 能 编 制 动 态 的 应 用 软件 ,而 且 能 编 制 完整 的 成 套 桌 面 应 用软 件 ,将 来 还 会 提 供 更多 的 能 帮 助 编 制 动 态 应 用 软 件 的 模 块,显 然 ,这 也 是 为 J ava的应 用 提 供 了 有 力 的 例 证 。 今 年 6月 7日 ,由 SUN公 司 和 台 湾 经 济 事 务 部 信 息 发 展 局, 台湾信 息 技 术 研究 所 等 单 位 牵 头 ,成 立 了 一 个 Java联 盟 , 参 加 的 有 22个 在 台 湾相 当 著 名 的 计 算 机公 司 ,并 在 台 北 建 立一 个 Java 开 发 中 心 ,在 新 竹 建 立 一 个 Java语 言实 验 室 , 以 掀起 台 湾 开 发 与 应 用 Java 语 言 的 热 潮 。 香 港 则 在 今 年 4月 就 举 行 了 全 岛 的 Java杯 比 赛 ,在 计 算 机界掀 起 了 学 习 Java的热 潮 (尤 其 是 在 大 学 生 们 中 ,出 现 了 一 批 Java迷 )。 有 人 预 言 :Java将 是 网 络 上 的 世 界 语 ,今 后 所 有的 用 其 他语 言 编 写 的 软 件统 统 都 要 用 Java 语 言 来 改 写 。 二 、 Java 语 言 对 软 件 开 发 技 术 的 影 响 工 业 界 不 少 人 预 言 :Java 语 言 的 出 现 ,将 会 引 起 一 场软 件革 命 ,这 是 因 为 传统 的 软 件 往 往 都 是 与 具 体 的 实现 环 境 有 关 ,换 了 一 个 环 境 就需 要 作 一 番 改 动 ,耗时 费 力 ,而 Java 语 言 能 在 执 行 码 (二 进 制 码 )上 兼 容 ,这 样 以 前 所开 发 的软 件 就 能 运行 在 不 同 的 机 器 上 ,只 要 所 用 的 机 器 能 提供 Java 语 言 解 释 器 即可 。 Java 语 言 将 对 未 来 软 件 的 开 发 产 生 影 响 , 可 从 如 下 几 个方面 考 虑 : 1 软 件 的 需 求 分 析 :可 将 用 户 的 需 求 进 行 动 态 的 、 可 视化描 述 ,以 提供设 计者 更 加 直 观 的 要 求 。 而 用 户 的 需 求 是 各色 各 样 的 ,不 受 地 区、 行 业 、 部 门 、 爱好 的 影 响 ,都 可 以 用 Java 语 言 描 述 清 楚 。 2 软 件 的 开 发 方 法 :由 于 Java 语 言 的 面 向 目 标 的 特 性 , 所以完 全 可 以 用 O-O的技 术 与 方 法 来 开 发 ,这 是 符 合 最 新 的 软件 开 发 规 范 要 求 的 。 3 Java 语 言 的 动 画 效 果 远 比 GUI技 术 更 加 逼 真 ,尤 其 是 利用WW W提 供 的 巨 大动 画 资 源 空 间 ,可 以 共 享 全 世 界 的 动 态 画面 的 资 源 。 4 软 件 最 终 产 品 :用 Java 语 言 开 发 的 软 件 可 以 具 有 可视化 、 可 听 化 、 可 操作 化 的 效 果 ,这 要 比 电 视 、 电 影 的 效果 更 为 理 想 ,因 为 它 可 以做 到 即 时 、 交 互、 动 画 与 动作 ,要 它 停 就 停 ,要 它 继 续 就 继 续 ,而 这 是 在 电 影与 电视 播 放 过 程 中难 以 做 到 的 。 5 其 它 :使 用 Java 语 言 对 开 发 效 益 、 开 发 价 值 都 有 比 较明显 的 影 响 。 三 、 工 业 界 对 Java 语 言 的 评 价 1996年 5月 29 31日 ,在 美 国 旧 金 山 召 开 了 一 个 全 世 界 Java语言 开 发 者 大 会,(JavaOne Developer Confer-ence),出 席 会 议 的 多 达 6500多 人 ,来 自 工 业界 的 超 过 一 半 ,有人 评 价 说 :这 是 近年 来 计 算 机 界 最 光 辉 的 一 次 盛 会 ,一 些 工 业 界 的 老 总们 相 当看 好 Java 语 言 ,认 为 它 的 使 用 将 会 引 起 一 场 软 件 革命 。 从 软 件的 设 计 风 格 、 设计 方 法 、 设 计 目 标 到 设 计 过 程 ,都 会 产 生 彻 底 的 变 革 ,甚 至 会改 变 此 星 球 的 生活 方 式 。 在 这 次 会 上 ,Java的 创 始 人 之 一 James Gosling 说 :Java 不仅 仅只 是 applets, 它 能 做任 何 事 情 ,Dta 咨 询 公 司 的 高 级软 件 工 程 师 Rich Kadel说 :Java 不仅 仅 是 一 种 程 序 设计 语言 ,更 是 现 代 化 软 件 再 实 现 的 基 础 ;Java 还 是 未 来 新 型 OS的核 心 ;将 会 出 现Java 芯 片 ;将 构 成 各 种 应 用 软 件 的 开 发 平 台与 实 现 环 境 ,是 人们 必 不 可 少 的 开 发工 具 。 由 于 各 界 都 看 好 它 ,因 此 ,各 大 公 司 都 纷 纷 表 示 支 持 Java,Inte l、 Xerox公 司 声 言将 把 Java嵌 入 到 他 们 的 产 品 中 去 。 就 连 华尔 街 金 融 界 也 在 投入 资 金 人 力 用 Java开 发 电 子 贸 易 、 金 融软 件 。 所 以 有 人 说 :现 在 第 三 方 的 开 发 商 都 团 结 在 Java大旗 周 围了 !,纷 纷 推 出 用Java 开 发 的 各 种 软 件 产 品 ,以 期尽 快 地 占 领 市 场 。 四 、 Java 语 言 的 应 用 前 景 Java 语 言 有 着 广 泛 的 应 用 前 景 ,大 体 上 可 以 从 以 下 几 个方面 来 考 虑 其 应 用 : 1 所 有 面 向 对 象 的 应 用 开 发 ,包 括 面 向 对 象 的 事 件 描 述、处 理 、 综 合 等 ;2 计 算 过 程 的 可 视 化 、 可 操 作 化 的 软 件 的 开 发 ;3 动 态 画 面 的 设 计 ,包 括 图 形 图 像 的 调 用 ;4 交 互 操 作 的 设 计 (选 择 交 互 、 定 向 交 互 、 控 制 流 程 等 );5 Internet的 系 统 管 理 功 能 模 块 的 设 计 ,包 括 Web页 面 的 动 态设计 、 管 理 和 交互 操 作 设 计 等 ;6 Intranet(企 业 内 部 网 )上 的 软 件 开 发 (直 接 面 向 企 业 内 部用户 的 软 件 );7 与 各 类 数 据 库 连 接 查 询 的 SQL 语 句 实 现 ;8 其 它 应 用 类 型 的 程 序 。 1.2 Java的 特 点 Java是 一 个 广 泛 使 用 的 网 络 编 程 语 言 ,它 是 一 种 新 的 计算概 念 。 首 先 ,作 为 一 种 程 序 设 计 语 言 ,它 简 单 、 面向对象 、 不依 赖于 机 器 的 结 构 、具 有 可 移 植 性 、 鲁 棒 性 、 安 全 性 、 并 且提 供 了 并 发 的 机 制 、具 有 很 高 的 性 能。 其 次 ,它 最 大 限 度 地 利 用 了 网 络 ,Java的小应用程序(applet) 可在网 络 上 传 输 而 不受 CPU和 环 境 的 限 制 。 另 外 ,Java还 提 供 了 丰富 的 类 库 ,使 程 序 设计 者 可 以 很 方 便地 建 立 自 己 的 系 统 。 下 面 我 们 分 别 从 这 三 个 方 面 来 讨 论 Java的 特 点 ,然 后通 过把 Java与 C,C+相 比进 一 步 指 出 它 所 具 有 的 优 点 。 一 、 Java语 言 Java语 言 有 下 面 一 些 特 点 :简 单 、 面 向 对 象 、 分 布 式 、解释 执 行 、 鲁 棒 、安 全 、 体 系 结 构 中 立 、 可 移 植 、 高 性 能、 多 线 程 以 及 动 态 性。 1.简 单 性 Java语 言 是 一 种 面 向 对 象 的 语 言 ,它 通 过 提 供 最 基 本 的方法 来 完 成 指 定 的任 务 ,只 需 理 解 一 些 基 本 的 概 念 ,就 可 以用 它 编 写 出 适 合 于 各种 情 况 的 应 用 程 序。 Java略 去了 运 算 符重 载 、 多 重 继 承 等 模 糊 的 概 念 ,并 且 通 过实 现 自 动 垃 圾 收集大 大 简 化 了 程 序 设 计 者 的 内 存 管 理 工 作 。 另 外 ,Java也 适合于 在 小 型 机 上 运行 ,它 的 基 本 解 释 器 及 类 的 支 持 只 有 40KB左右 ,加 上 标 准 类 库 和线 程 的 支 持 也 只 有 215KB左 右 。 库 和 线程 的 支 持 也 只 有 2 15KB左 右 。 2.面 向 对 象 Java语 言 的 设 计 集 中 于 对 象 及 其 接 口 ,它 提 供 了 简 单 的类机 制 以 及 动 态 的接 口 模 型 。 对 象 中 封 装 了 它 的 状 态 变 量以 及 相 应 的 方 法 ,实现 了 模 块 化 和 信 息隐 藏 ;而 类 则 提 供 了一 类 对 象 的 原 型 ,并 且 通 过 继 承 机 制 ,子 类可 以 使 用 父 类 所提供 的 方 法 , 实 现 了 代 码 的 复 用 。 3.分 布 性 Java是 面 向 网 络 的 语 言 。 通 过 它 提 供 的 类 库 可 以 处 理TCP/IP协议 ,用 户 可 以通 过 URL地 址 在 网 络 上 很 方 便 地 访 问 其 它 对 象。 4.鲁 棒 性 Java在 编 译 和 运 行 程 序 时 ,都 要 对 可 能 出 现 的 问 题 进 行检查 ,以 消 除 错 误 的产 生 。 它 提 供 自 动 垃 圾 收 集 来 进 行 内存 管 理 ,防 止 程 序 员 在管 理 内 存 时 容 易 产生 的 错 误 。 通 过集 成 的 面 向 对 象 的 例 外 处 理 机 制 ,在 编 译 时,Java提 示 出 可能 出现 但 未 被 处 理 的 例 外 ,帮 助 程 序 员 正 确 地 进 行 选 择 以防 止 系统 的 崩 溃 。 另 外,Java在 编 译 时 还 可 捕 获 类 型 声 明 中的 许 多 常 见 错 误 ,防 止 动 态运 行 时 不 匹 配 问题 的 出 现 。 5.安 全 性 用 于 网 络 、 分 布 环 境 下 的 Java必 须 要 防 止 病 毒 的 入 侵 。Java 不 支 持 指 针 ,一切 对 内 存 的 访 问 都 必 须 通 过 对 象 的 实 例 变量 来 实 现 ,这 样 就防 止 程 序 员 使 用 特洛 伊 木 马 等欺 骗 手 段 访 问 对 象 的 私 有 成 员 ,同 时 也 避 免 了指 针 操 作 中容 易 产 生的 错 误 。 6.体 系 结 构 中 立 Java解 释 器 生 成 与 体 系 结 构 无 关 的 字 节 码 指 令 ,只 要 安装了 Java运 行 时 系 统,Java程 序 就 可 在 任 意 的 处 理 器 上 运 行 。这 些 字 节 码 指 令 对 应于 Java虚 拟 机 中 的表 示 ,Java 解 释 器 得到 字 节 码 后 ,对 它 进 行 转 换 ,使 之 能 够 在 不同 的 平 台 运 行 。 7.可 移 植 性 与 平 台 无 关 的 特 性 使 Java程 序 可 以 方 便 地 被 移 植 到 网 络上的 不 同 机 器 。同 时 ,Java的 类 库 中 也 实 现 了 与 不 同 平 台 的 接口 ,使 这 些 类 库 可以 移 植 。 另 外 ,Java编 译 器 是 由 Java语 言 实现 的 ,Java运 行 时 系 统 由 标 准 C实 现 ,这使 得 Java系 统 本 身 也具有 可 移 植 性 。 8.解 释 执 行 Java解 释 器 直 接 对 Java字 节 码 进 行 解 释 执 行 。 字 节 码 本身携 带 了 许 多 编 译时 信 息 ,使 得 连 接 过 程 更 加 简 单 。 9.高 性 能 和 其 它 解 释 执 行 的 语 言 如 BASIC、 TCL不 同 ,Java字 节 码 的 设计使 之 能 很 容 易地 直 接 转 换 成 对 应 于 特 定 CPU 的 机 器 码 ,从 而得 到 较 高 的 性 能。 10.多 线 程 多 线 程 机 制 使 应 用 程 序 能 够 并 行 执 行 ,而 且 同 步 机 制 保证了 对 共 享 数 据 的正 确 操 作 。 通 过 使 用 多 线 程 ,程 序 设 计 者可 以 分 别 用 不 同 的线 程 完 成 特 定 的 行为 ,而不 需 要 采 用 全 局的 事 件 循 环 机 制 ,这 样 就 很 容 易 地 实 现 网 络 上 的 实 时 交 互行为 。 11.动 态 性 Java的 设 计 使 它 适 合 于 一 个 不 断 发 展 的 环 境 。 在 类 库 中可以 自 由 地 加 入新 的 方 法 和 实 例 变 量 而 不 会 影 响 用 户 程 序的 执 行 。 并 且Java通 过 接 口 来 支 持 多重 继 承 ,使 之 比 严 格 的类 继 承 具 有 更 灵 活 的 方 式 和 扩 展 性 。 二 、 Java Applet Java语 言 的 特 性 使 它 可 以 最 大 限 度 地 利 用 网 络 。 Applet是Jav a的 小 应 用 程序 ,它 是 动 态 、 安 全 、 跨 平 台 的 网 络 应 用 程 序。 Java Applet嵌 入HTML语 言 ,通 过 主页 发 布 到 Internet。 网 络 用 户访 问 服 务 器 的Applet时 ,这些Applet 从网 络 上 进 行 传 输 ,然 后 在支 持 Java 的 浏 览 器 中 运 行 。 由 于 Java语 言 的 安 全 机 制,用 户一 旦 载 入Applet,就 可 以 放 心 地 来 生 成 多 媒 体 的 用 户 界 面 或完 成 复 杂 的计 算 而 不 必 担 心 病毒 的 入 侵 。 虽 然 Applet可 以 和图 像 、 声 音 、 动 画 等 一 样 从 网 络上 下 载 ,但 它 并 不同 于 这些 多 媒 体 的 文 件 格 式 ,它 可 以 接 收 用 户 的 输 入 ,动 态 地进 行改 变 ,而 不 仅 仅是 动 画 的 显 示 和 声 音 的 播 放 。 三 、 丰 富 的 类 库 Java提 供 了 大 量 的 类 以 满 足 网 络 化 、 多 线 程 、 面 向 对 象系统 的 需 要 。 1.语 言 包 提 供 的 支 持 包 括 字 符 串 处 理 、 多 线 程 处 理 、例外 处 理 、 数 学 函数 处 理 等 ,可 以 用 它 简 单 地 实 现 Java 程 序的 运 行 平 台 。 2.实 用 程 序 包 提 供 的 支 持 包 括 哈 希 表 、 堆 栈 、 可 变 数组、 时 间 和 日 期 等。 3.输 入 输 出 包 用 统 一 的 流 模 型 来 实 现 所 有 格式 的 I/O,包括 文 件 系 统 、 网 络、 输 入 /出 设 备 等 。 4.低 级 网 络 包 用 于 实 现 Socket编 程 。 5.抽 象 图 形 用 户 接 口 包 实 现 了 不 同 平 台 的 计 算 机 的 图形用 户 接 口 部 件 ,包括 窗 口 、 菜 单 、 滚 动 条 、 对 话 框 等 ,使得 Java可 以 移 植 到 不 同平 台 的 机 器 。 6.网 络 包 支 持 Internet的 TCP/IP协 议 ,提 供 了 与 Internet的 接 口。它 支 持 URL连 接,WWW的 即 时 访 问 ,并 且 简 化 了 用 户 /服 务 器 模型 的 程 序 设 计 。 四 、 Java和 C、 C+ 对 于 变 量 声 明 、 参 数 传 递 、 操 作 符 、 流 控 制 等 ,Java 使用了 和 C、 C+相 同的 传 统 ,使 得 熟 悉 C、 C+的 程 序 员 能 很 方 便地 进 行 编 程 。 同 时,Java为 了 实 现 其简 单 、 鲁 棒 、 安 全 等 特性 ,也 摒 弃 了 C和 C+中 许 多 不 合 理 的 内容 。 1.全 局 变 量 Java程 序 中 ,不 能 在 所 有 类 之 外 定 义 全 局 变 量 ,只 能 通 过在一 个 类 中 定 义 公用 、 静 态 的 变 量 来 实 现 一 个 全 局 变 量 。例 如 : Class GlobalVar public static global_var; 在 类 GlobalVar中 定 义 变 量 global_var为 public stat-ic,使 得 其 它类可 以 访 问 和 修 改该 变 量 。 Java对 全 局 变 量 进 行 了 更 好 的 封 装 。 而 在 C和 C+中 , 依 赖于不 加 封 装 的 全局 变 量 常 常 造 成 系 统 的 崩 溃 。 2.Goto Java不 支 持 C、 C+中 的 goto语 句 ,而 是 通 过 例 外 处 理 语 句 try,Ca tch, final等 来 代替 C、 C+中 用 goto来 处 理 遇 到 错 误 时 跳 转 的情 况 ,使 程 序 更 可 读且 更 结 构 化 。 3.指 针 指 针 是 C、 C+中 最 灵 活 ,也 是 最 容 易 产 生 错 误 的 数 据 类型。 由 指 针 所 进 行的 内 存 地 址 操 作 常 会 造 成 不 可 预 知 的 错误 ,同 时 通 过 指 针 对某 个 内 存 地 址 进 行显 式 类 型 转 换 后 ,可以 访 问 一 个 C+中 的 私 有 成 员 ,从 而 破 坏 安全 性 ,造 成 系 统 的崩 溃 。 而 Java 对 指 针 进 行 完 全 的 控 制 ,程 序 员 不 能 直 接进行 任 何 指 针 操 作 ,例 如把 整 数 转 化 为 指 针 ,或 者 通 过 指 针释放 某 一 内 存 地 址 等 。 同时 ,数 组 作 为 类 在Java中 实 现 ,良 好 地解 决 了 数 组 访 问 越 界 这 一 C、 C+中 不 作 检 查的 错 误 。 4.内 存 管 理 在 C中 ,程 序 员 通 过 库 函 数 malloc()和 free()来 分 配 和 释 放 内存 , C+中 则 通 过 运算 符 new和 delete来 分 配 和 释 放 内 存 。 再 次 释放 已 释 放 的 内 存 块或 未 被 分 配 的 内存 块 ,会 造 成 系 统 的 崩溃 ;同 样 ,忘 记 释 放 不 再 使 用 的 内 存 块 也会 逐 渐 耗 尽 系 统资源 。 而 在 Java中 ,所 有 的 数 据 结 构 都 是 对 象 , 通 过 运 算 符 new为它们 分 配 内 存 堆。 通 过 new得 到 对 象 的 处 理 权 ,而 实 际 分 配 给对 象 的 内 存 可 能随 程 序 运 行 而 改变, Java对 此 自 动 地 进 行 管理 并 且 进 行 垃 圾 收 集 ,有 效 防 止 了 由 于程 序 员 的 误 操 作而导 致 的 错 误 ,并 且 更 好 地 利 用 了 系 统 资 源 。 5.数 据 类 型 的 支 持 在 C、 C+中 ,对 于 不 同 的 平 台 ,编 译 器 对 于 简 单 数 据 类 型如in t,float等 分 别 分配 不 同 长 度 的 字 节 数 ,例 如 :int在 IBM PC中为 16位 ,在 VAX-11中 为32位 ,这 导 致 了 代 码的 不 可 移 植 性 ,但 在 Java中 ,对 于 这 些 数 据 类 型 总 是 分 配 固 定 长 度 的 位 数 ,如 对 int型 ,它 总 占 32位 ,这 就 保 证 了 Java的 平 台 无 关 性 。 6.类 型 转 换 在 C、 C+中 ,可 以 通 过 指 针 进 行 任 意 的 类 型 转 换 ,常 常 带来不 安 全 性 ,而 Java中 ,运 行 时 系 统 对 对 象 的 处 理 要 进 行 类型 相 容 性 检 查 ,以 防 止不 安 全 的 转 换 。 7.头 文 件 C、 C+中 用 头 文 件 来 声 明 类 的 原 型 以 及 全 局 变 量 、 库 函数等 ,在 大 的 系 统中 ,维 护 这 些 头 文 件 是 很 困 难 的 。 而 Java不支 持 头 文 件 ,类 成 员的 类 型 和 访 问 权限 都 封 装 在 一 个 类 中 ,运 行 时 系 统 对 访 问 进 行 控 制 ,防 止 对 私有 成 员 的 操 作 。 同时 ,Java中 用 import语 句 来 与 其 它 类 进 行 通 讯 ,以 便 使 用它 们 的方法 。 8.结 构 和 联 合 C、 C+中 的 结 构 和 联 合 中 所 有 成 员 均 为 公 有 ,这 就 带 来了安 全 性 问 题 。Java中 不 包 含 结 构 和 联 合 ,所 有 的 内 容 都 封装 在 类 中 。 9.预 处 理 C、 C+中 用 宏 定 义 来 实 现 的 代 码 给 程 序 的 可 读 性 带 来 了困难 。 在 Java中 ,不 支 持 宏 ,它 通 过 关 键 字 final 来 声 明 一 个 常量 ,以 实 现 宏 定 义中 广 泛 使 用 的 常 量定 义 。 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 (保 留 字 )等 ,变量 名 应 具 有 一 定 的 含 义 ,以 增 加 程 序 的可 读 性 。 变 量 类 型 可 以 为 上 面 所 说 的 任 意 一 种 数 据 类 型 。 变 量 的 作 用 域 指 明 可 访 问 该 变 量 的 一 段 代 码 。 声 明一个 变 量 的 同 时 也 就指 明 了 变 量 的 作 用 域 。 按 作 用 域 来 分 ,变 量 可 以 有 下 面 几 种:局 部 变 量 、 类 变 量 、方 法 参 数 、 例外 处 理 参 数 。 局 部 变 量 在 方 法 或 方 法 的 一 块 码 中 声 明 ,它 的 作 用域 为它 所 在 的 代 码 块 (整 个 方 法 或 方 法 中 的 某 块 代 码 )。 类 变 量 在 类 中 声 明 ,而 不 是 在 类 的 某 个 方 法 中 声 明 , 它的作 用 域 是 整 个 类 。 方 法 参 数 传 递 给 方 法 ,它 的 作 用 域 就 是 这 个 方 法 。 例 外 处 理 参 数 传 递 给 例 外 处 理 代 码 ,它 的 作 用 域 就 是 例外处 理 部 分 。 在 一 个 确 定 的 域 中 ,变 量 名 应 该 是 唯 一 的 。 通 常 , 一 个域用 大 括 号 来 划 定 。 变 量 的 声 明 格 式 为 : 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四 种 。 下 表 列 出各类 型 所 在 内 存 的 位数 和 其 表 示 范 围 。 int类 型 是 最 常 使 用 的 一 种 整 数 类 型 。 它 所 表 示 的 数 据范围 足 够 大 ,而 且适 合 于 32位 、 64位 处 理 器 。 但 对 于 大 型 计算 ,常 会 遇 到 很 大 的整 数 ,超 出 int类型 所 表 示 的 范 围 ,这 时 要使 用 long类 型 。 由 于 不 同 的 机 器 对 于 多 字 节 数 据 的 存 储 方 式 不 同 ,可 能是从 低 字 节 向高 字 节 存 储 ,也 可 能 是 从 高 字 节 向 低 字 节 存 储 ,这 样 ,在 分 析 网络 协 议 或 文 件格 式 时 , 为 了 解 决 不 同 机 器上 的 字 节 存 储 顺 序 问 题 ,用 byte类 型来 表 示 数 据 是合 适 的 。而 通 常 情 况 下 ,由 于 其 表 示 的 数 据 范 围 很 小 ,容 易 造成 溢 出 ,应 避 免使 用 。 short类 型 则 很 少 使 用 ,它 限 制 数 据 的 存 储 为 先 高 字 节 ,后低字 节 ,这 样 在 某些 机 器 中 会 出 错 。 三 、 整 型 变 量 的 定 义 ,如 : byte b; /指定变量b为byte型 short s; /指定变量s为short型 int i; /指定变量i为int型 long l; /指定变量l为long型 2.4 浮 点 型 (实 型 )数 据 一 、 实 型 常 量 与 C,C+相 同 ,Java的 实 常 数 有 两 种 表 示 形 式 : 十 进 制 数 形 式 ,由 数 字 和 小 数 点 组 成 ,且 必 须 有 小 数点,如 0.123, .123,123.,123.0 科 学 计 数 法 形 式 。 如 :123e3或 123E3,其 中 e或 E之 前 必 须有数 字 ,且 e或 E后面 的 指 数 必 须 为 整 数 。 实 常 数 在 机 器 中 占 64位 ,具 有 double型 的 值 。 对 于 float 型的值 ,则 要 在 数 字后 加 f或 F,如 12.3F,它 在 机 器 中 占 32位 , 且 表示
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025版合同文件模板:技术咨询服务协议详解
- 物业空调漏水工程方案(3篇)
- 苏州建设工程方案公示网(3篇)
- 脊柱的外形与形态
- 建筑工地考试试卷及答案
- 模板工程安全措施方案(3篇)
- 2025年东农水电站考试试题及答案
- 2025简易房屋租赁合同范本
- 2025年氧气瓶项目提案报告模范
- 锅炉培训知识课件
- 粘膜免疫 2课件
- 电子课件-《可编程序控制器及其应用(三菱-第三版)》-A04-1724-课题一-可编程序控制器基础知识
- 统计业务知识(统计法规)课件
- 实验计划样表
- 三阶魔方入门教程课件
- 艾滋病个案流行病学调查表
- 广告策划与创意课件-2
- 地质勘察任务书模板
- 全国中心血站上岗证考试题库
- 环境社会学整本书课件完整版电子教案全套课件最全教学教程ppt(最新)
- 计算机组装与维护完整版课件(全)
评论
0/150
提交评论