数 据 结 构 与 算 法 课程设计下载

weixin_39821260 2019-09-15 07:00:16
文章编辑   功能:输入一页文字,程序可以统计出文字、数字、空格的个数。   静态存储一页文章,每行最多不超过80个字符,共N行;要求(1)分别统计出其中英文字母数和空格数及整篇文章总字数;(2)统计某一字符串在文章中出现的次数,并输出该次数;(3)删除某一子串,并将后面的字符前移。   存储结构使用线性表,分别用几个子函数实现相应的功能;   输入数据的形式和范围:可以输入大写、小写的英文字母、任何数字及标点符号。 输出形式:(1)分行输出用户输入的各行字符;(2)分4行输出"全部字母数"、"数字个数"、"空格个数"、"文章总字数"(3)输出删除某一字符串后的文章;
相关下载链接://download.csdn.net/download/sinat_29028971/8805875?utm_source=bbsseo
...全文
33 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复
《电子系统设计课程设计》 项目设计书 项目名称 打地鼠 小组成员1 小组成员2 小组成员3 专 业 任课教师 成都理工大学信科院电子系 2013年 6月 项目名称,并简要说明应用背景。 项目名称:打地鼠 应用背景:打地鼠游戏是人们生活中常见的一种休闲小游戏。此游戏玩简单,考验人 们的反应速度。开发者可以根据人们兴趣开发出具有多功能的打地鼠游戏,比如升级、 道具、过关等,增加游戏的趣味性。 项目设计需求(包括功能描述和性能设计指标) 功能描述: 1.启动系统,液晶屏第一排随机显示一个1- 9的字,显示地鼠(Ö)或地雷(*),中间显示剩余时间,右边显示分;液晶屏第二 排显示游戏的英文名称——打地鼠。 2.开始游戏后,在背景音乐伴随下显示"Ready Go!!!",之后正式进入游戏游戏历时2min,随着时间的增加,字显示速度加快,游戏中 课随时按K10键暂停,再次按则恢复游戏。 3.进入游戏界面后,随机产生地鼠和地雷(地雷产生的概率为10%),但随着时间的增加 ,地雷出现的概率会增加,字更新的速度也越快。按键分别对应独立键盘的9个按键, 按下某个键即代表击打相应位置。 4.若击中地鼠:正常情况下分加1,若在较短时间(实际为地鼠产生到消失的前一半时 间内)击中,则"快速反应,双倍加分",即分加2。若击中地雷,则分减1,若未按 下相应键,则分加1。 5.游戏束,背景音乐停止,保留最高分,分和时间在按复位后刷新。 性能设计指标:能通过复位,玩家可以持续玩游戏。自动保存和人为清除游戏据。 设计方案 1 系统设计框图及原理阐述 2 设计框图: 3 4 5 6 7 原理阐述: 1) 复位电路 复位条件:89C52单片机复位需要一个长达24个时钟周期的高电平才能复位,复位的作用 就是使程序的指针指向地址0,每个程序都是从地址0开始执行,所以复位的概念就是让 程序从头开始执行。 复位原理:该复位电路具有上电复位的功能,此功能是由C3实现的。当系统上电时C3有 一个充电放电的过程,放电过程会产生一个高电平,放电的时间根据公式()计 。R为电阻R1的阻值,C为极性电容C3的大小。 系统正常运行时,按下按键K1时,RST端的电平为VCC*10/11,也是一个高电平,此时芯 片也会产生一个高电平复位信号。 2) 蜂鸣器 声音的产生是一种音频效果,振动的频率高,则为高音,频率低,则为低音,人耳比 较容易辨认的声音频率大概是0~20 kHz。在字电路中,以脉冲信号驱动蜂鸣器,以产生声音,在同样频率下,人类的耳朵 是很难区别正弦信号或脉冲信号所产生的音效。 当P0.0 口输出1 时,内部的MOSFET 不导通,晶体管的BE 之间不会有输入电流,所以蜂鸣器上也不会有输出电流,蜂鸣器就不会激磁。当P0.0口 输出为0 时,蜂鸣器就会激磁。 3) 按键 独立式按键接口设计:独立式按键就是各按键相互独立,每个按键单独占用一根I/O 口线,每根I/O口线的按键工作状态不会影响其他I/O口线上的工作状态。因此,通过检 测输入线的电平状态可以很容易判断哪个按键被按下了。优点:电路配置灵活,软件 简单。缺点:每个按键需占用一根I/O口线,在按键量较多时,I/O口浪费大,电路 显得复杂。因此,此键盘是用于按键较少或操作速度较高的场合。 矩阵式键盘接口设计:矩阵式键盘适用于按键量较多的场合,由行线和列线组成, 按键位于行列的交叉点上。节省I/O口。 矩阵键盘工作原理:行线通过上拉电阻接到+5V上。无按键,行线处于高电平状态, 有键按下,行线电平状态将由与此行线相连的列线电平决定。列线电平为低,则行线电 平为低;列线电平为高,则行线电平为高。 4) 存储器 24C02特性: 1. 与400KHz I2C总线兼容 2. 1.8到6.0伏工作电压范围 3. 低功耗CMOS技术 4. 写保护功能当WP为高电平时进入写保护状态 5. 页写缓冲器 6. 自定时擦写周期 7. 1,000,000编程/擦除周期 8. 可保存据100年 9. 8脚DIPSOIC或TSSOP封装 10. 温度范围商业级工业级和汽车级 串行E2PROM是基于I2C-BUS 的存储器件,遵循二线制协议,由于其具有接口方便,体积小,据掉电不丢失等特点 ,在仪器仪表及工业自动化控制中得到大量的应用。 "管脚名称 "功能 " "A0、A1、A2 "器件地址选择 " "SDA "串行据/地址 " "SCL "串行时钟 " "WP "写保护 " "Vcc "+1.8V~6.0V工作电压 " "Vss "地 " 5)液晶 1602液晶也叫1602字符型液晶,它是一种专门用来显示字母、字、符号等的点阵型 液晶模块。它由若干个5X7或者5X11等点阵字符位组成,每个点阵字符位都可以显示一个
第 一 章   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位 , 且 表示 精 度 较 低 。 二 、 实 型 变 量 实 型 变 量 的 类 型 有 float和 double两 种 ,下 表 列 出 这 两 种 类型所 占 内 存 的 位 和 其 表 示 范 围 。 据类型 所占位 的范围 float 32 3.4e-038~3.4e+038 double 64 1.7e-308~1.7e+308 双 精 度 类 型 double比 单 精 度 类 型 float具 有 更 高 的 精 度 和更大 的 表 示 范 围 ,常 常 使 用 。 三 、 实 型 变 量 定 义 ,如 float f; //指 定 变 量 f为 float型 double d; //指 定 变 量 d为 double型 [注 ]与 C、 C++不 同 ,Java中 没 有 无 符 号 型 整 ,而 且 明 确 规定了 整 型 和 浮点 型 据 所 占 的 内 存 字 节 ,这 样 就 保 证 了安 全 性 、 鲁 棒 性和 平 台 无 关 性。 § 2.5 字 符 型 据 一 、 字 符 常 量 字 符 常 量 是 用 单 引 号 括 起 来 的 一 个 字 符 ,如 ‘ a’ , ‘ A’。另 外 ,与 C、C++相 同 ,Java也 提 供 转 义 字 符 ,以 反 斜 杠 (\)开 头 ,将其 后 的 字 符转 变 为 另 外 的 含义 ,下 表 列 出 了 Java中 的 转 义 字符 。 与 C、 C++不 同 ,Java中 的 字 符 型 据 是 16位 无 符 号 型 据 ,它表 示 Unicode集,而 不 仅 仅 是 ASCII集 ,例 如 \u0061表 示 ISO拉 丁 码的 ‘ a’ 。 转义字符 描述 \ddd 1到3位8进制据所表示的字符(ddd) \uxxxx 1到4位16进制所表示的字符(xxxx) \' 单引号字符 \\ 反斜杠字符 \r 回车 \n 换行 \f 走纸换页 \t 横向跳格 \b 退格 二 、 字 符 型 变 量 字 符 型 变 量 的 类 型 为 char,它 在 机 器 中 占 16位 ,其 范 围 为 0~65 535。 字 符 型变 量 的 定 义 如 : char c='a'; //指 定 变 量 c为 char型 ,且 赋 初 值 为 'a' 与 C、 C++不 同 ,Java中 的 字 符 型 据 不 能 用 作 整 , 因 为Java不提 供 无 符号 整 类 型 。 但 是 同 样 可 以 把 它 当 作 整 据来 操 作 。 例 如 : int three=3; char one='1'; char four=(char)(three+one);//four='4' 上 例 中 ,在 计 时 ,字 符 型 变 量 one被 转 化 为 整 , 进行相 加 ,最 后 把 果 又 转 化 为 字 符 型 。 三 、 字 符 串 常 量 与 C、 C++相 同 ,Java的 字 符 串 常 量 是 用 双 引 号 ("")括起 来 的一 串 字 符 ,如"This is a string.\n"。 但 不 同 的 是 ,Java中 的 字 符 串 常 量 是 作 为String类 的 一 个 对 象 来处 理 的 ,而不 是 一 个 据 。 有 关 类 String,我 们 将 在 第 七 章 讲 述。 § 2.6 布 尔 型 据 布 尔 型 据 只 有 两 个 值 ,true和 false,且 它 们 不 对 应 于 任何整 值 。 在 流 控制 中 常 用 到 它 。 布 尔 型 变 量 的 定 义 如 : boolean b=true; //定 义 b为 布 尔 型 变 量 ,且 初 值 为 true § 2.7 举 例 例 2.1.下 例 中 用 到 了 前 面 提 到 的 据 类 型 ,并 通 过 屏 幕显 示 它 们 的 值 。 public class SimpleTypes{ public static void main( String args[] ){ byte b=0x55; short s=0x55ff; int i=1000000; long l=0xfffL; char c='c'; float f=0.23F; double d=0.7E-3; boolean bool=true; System.out.println("b = "+b); System.out.println("s = "+s); System.out.println("i = "+i); System.out.println("c = "+c); System.out.println("f = "+f); System.out.println("d = "+d); System.out.println("bool = "+bool); } } 编译并运行该程序,输出果为: C:\>java SimpleTypes b = 85 s = 22015 i = 1000000 l = 4095 c = c f = 0.23 d = 0.0007 bool = true § 2.8 各 类 值 型 据 间 的 混 合 运 一 、 自 动 类 型 转 换 整 型 、 实 型 、 字 符 型 据 可 以 混 合 运 。 运 中 , 不同类 型 的 据 先转 化 为 同 一 类 型 ,然 后 进 行 运 。 转 换 从低 级 到 高 级 ,如 下 图: 转 换 规 则 为 : ① (byte或 short) op int→ int ② (byte或 short或 int) op long→ long ③ (byte或 short或 int或 long) op float→ float ④ (byte或 short或 int或 long或 float) op double→ double ⑤ char op int→ int 其 中 ,箭 头 左 边 表 示 参 与 运 据 类 型 ,op为 运 符 (如加、 减 、 乘 、除 等 ),右 边 表 示 转 换 成 的 进 行 运 据 类 型。 例2.2 public class Promotion{ public static void main( String args[ ] ){ byte b=10; char c='a'; int i=90; long l=555L; float f=3.5f; double d=1.234; float f1=f*b; // float * byte -> float int i1=c+i;    // char + int -> int long l1=l+i1; // long + int ->ling double d1=f1/i1-d; // float / int ->float, float - double -> double} } 二 、 强 制 类 型 转 换 高 级 据 要 转 换 成 低 级 据 ,需 用 到 强 制 类 型 转 换 ,如 : int i; byte b=(byte)i; //把 int型 变 量 i强 制 转 换 为 byte型 这 种 使 用 可 能 会 导 致 溢 出 或 精 度 的 下 降 ,最 好 不 要 使 用。 第 三 章   运 符 和 表 达式 运 符 指 明 对 操 作 所 进 行 的 运 。 按 操 作 目来分 ,可 以 有 一元 运 符 (如 ++、--),二 元 运 符 (如 +、 >)和 三元 运 符 (如?:),它 们 分 别 对 应 于一 个 、 两 个 和 三 个 操 作 。 对 于 一 元 运 符 来 说 ,可 以 有 前缀 表 达 式 (如 ++i )和 后 缀表 达 式 (如 i++),对 于 二 元 运 符 来 说 则 采 用 中 缀 表 达 式 (如 a+b)。 按 照运 符 功 能 来 分 ,基 本 的 运 符 有 下 面 几 类 : 1. 术 运 符 (+,-,*,/,%,++,--) 2.关 系 运 符 (>,<,>=,<=,==,!=) 3.布 尔 逻 辑 运 符 (!,&&,||) 4.位 运 符 (>>,<<,>>>,&,|,^,~ ) 5.赋 值 运 符 (=,及 其 扩 展 赋 值 运 符 如 +=) 6.条 件 运 符 ( ?:) 7.其 它 (包 括 分 量 运 符 · ,下 标 运 符 [],实 例 运 符 instanc eof,内 存 分 配运 符 new,强 制 类 型 转 换 运 符 (类 型 ), 方 调 用 运 符 () 等 ) 本 章 中 我 们 主 要 讲 述 前 6类 运 符 。 § 3.1 术 运 术 运 符 作 用 于 整 型 或 浮 点 型 据 ,完 成 术 运 。 一 、 二 元 术 运 符 ,如 下 表 所 示 运符 用 描述 + op1+op2 加 - op1-op2 减 * op1*op2 乘 / op1/op2 除 % op1%op2 取模(求余) Java对 加 运 符 进 行 了 扩 展 ,使 它 能 够 进 行 字 符 串 的连 接,如 "abc"+"de",得到 串 "abcde"。 我 们 将 在第 七 章 中 讲 解 。 与 C、 C++不 同 ,对 取 模 运 符 %来 说 ,其 操 作 可 以为浮点 , 如37.2%10=7.2。 二 、 一 元 术 运 符 ,如 下 表 所 示 : 运符 用 描述 + +op 正值 - -op 负值 ++ ++op,op++ 加1 -- --op,op-- 减1 i++与 ++i的 区 别 i++在 使 用 i之 后 ,使 i的 值 加 1,因 此 执 行 完 i++后 ,整 个 表达式的 值 为 i,而 i的 值变 为 i+1。 ++i在 使 用 i之 前 ,使 i的 值 加 1,因 此 执 行 完 ++i后 ,整 个 表达式和 i的 值 均 为 i+1。 对 i--与 --i同 样 。 例 3.1.下 面 的 例 子 说 明 了 术 运 符 的 使 用 public class ArithmaticOp{ public static void main( String args[] ){ int a=5+4; //a=9 int b=a*2; //b=18 int c=b/4; //c=4 int d=b-c; //d=14 int e=-d; //e=-14 int f=e%4; //f=-2 double g=18.4; double h=g%4; //h=2.4 int i=3; int j=i++; //i=4,j=3 int k=++i; //i=5,k=5 System.out.println("a = "+a); System.out.println("b = "+b); System.out.println("c = "+c); System.out.println("d = "+d); System.out.println("e = "+e); System.out.println("f = "+f); System.out.println("g = "+g); System.out.println("h = "+h); System.out.println("i = "+i); System.out.println("j = "+j); System.out.println("k = "+k); } } 其果为: C:\>java ArithmaticOp a = 9 b = 18 c = 4 d = 14 e = -14 f = -2 g = 18.4 h = 2.4 i = 5 j = 3 k = 5 § 3.2 关 系 运 符 关 系 运 符 用 来 比 较 两 个 值 ,返 回 布 尔 类 型 的值true或 false。关 系 运 符 都 是 二 元 运 符 ,如 下 表 所 示 : 运符 用 返回true的情况 > op1>op2 op1大于op2 >= op1>=op2 op1大于或等于op2 < op1<op2 op1小于op2 <= op1<=op2 op1小于或等于op2 == op1==op2 op1与op2相等 != op1!=op2 op1与op2不等 Java中 ,任 何 据 类 型 的 据 (包 括 基 本 类 型 和 组 合 类 型)都可 以 通 过 ==或!=来 比 较 是 否 相 等 (这 与 C、 C++不 同 )。 关 系 运 果 返 回 true或 false,而不是C、C++中 的 1或 0。 关 系 运 符 常 与 布 尔 逻 辑 运 符 一 起 使 用 ,作 为 流 控 制语句 的 判 断 条件 。 如 if( a>b && b==c) § 3.3 布 尔 逻 辑 运 符 布 尔 逻 辑 运 符 进 行 布 尔 逻 辑 运 ,如 下 表 所 示 : op1 op2 op1&&op2 op1||op2 !op1 false false false false true false true false true true true false false true false true true true true false } ·&&、‖ 为二元运符,实现逻辑与、逻辑或。 ·! 为一元运符,实现逻辑非。 ·对 于 布 尔 逻 辑 运 , 先 求 出 运 符 左 边 的 表 达 式 的 值 , 对 或 运 如 果 为 true, 则 整 个 表 达 式 的 果 为 true, 不 必对 运 符 右 边 的 表 达 式 再 进 行 运 ; 同 样 , 对 与 运 , 如果 左 边 表 达 式 的 值 为 false, 则 不 必 对 右 边的 表 达式 求 值 , 整个表 达 式 的 果 为 false。 下面的例子说明了关系运符和布尔逻辑运符的使用。 public class RelationAndConditionOp{ public static void main( String args[] ){ int a=25,b=3; boolean d=a<b; //d=false System.out.println("a<b = "+d); int e=3; if(e!=0 && a/e>5) System.out.println("a/e = "+a/e); int f=0; if(f!=0 && a/f>5) System.out.println("a/f = "+a/f); else System.out.println("f = "+f); } } 其运行果为: C:\>java RelationAndConditionOp a<b = false a/e = 8 f = 0 注 意 :上 例 中 ,第 二 个 if语 句 在 运 行 时 不 会 发 生 除 0溢 出的错 误 ,因 为 e!=0为false,所 以 就 不 需 要 对 a/e进 行 运 。 § 3.4 位 运 符 位 运 符 用 来 对 二 进 制 位 进 行 操 作 ,Java中 提 供 了 如 下表所 示 的 位 运 符 : 位 运 符 中 ,除   ~   以 外 ,其 余 均 为 二 元 运 符 。 操 作 只 能 为 整 型 和 字 符 型 据 。 3.4.1 补 码 Java使 用 补 码 来 表 示 二 进 制 ,在 补 码 表 示 中 ,最 高 位 为符号 位 ,正 的 符 号 位 为 0,负 为 1。 补 码 的 规 定 如 下 : 对 正 来 说 ,最 高 位 为 0,其 余 各 位 代 表 值 本 身 (以 二 进制表 示 ),如 +42的补 码 为 00101010。 对 负 而 言 ,把 该 绝 对 值 的 补 码 按 位 取 反 ,然 后 对 整个 加 1,即 得 该 的 补 码 。 如 -42的 补 码 为 11010110 (00101010 按位 取 反 11010101 +1=11010110 ) 用 补 码 来 表 示 ,0的 补 码 是 唯 一 的 ,都 为 00000000。 (而 在原码 ,反 码 表 示中 ,+0和 -0的 表 示 是 不 唯 一 的 ,可 参 见 相 应 的书 籍 )。 而 且 可 以用 111111表 示 -1的 补 码 (这 也 是 补 码 与 原 码和 反 码 的 区 别 )。 3.4.2 按 位 取 反 运 符 ~ ~   是 一 元 运 ,对 据 的 每 个 二 进 制 位 取 反 ,即 把 1变为 0,把 0变 为 1。 例 如 : 0010101 ~ 1101010 注 意 ,~ 运 符 与 - 运 符 不 同 ,~ 21≠ -21。 3.4.3 按 位 与 运 符 & 参 与 运 的 两 个 值 ,如 果 两 个 相 应 位 都 为 1,则 该 位 的 果为 1,否 则 为 0。即 : 0 & 0 = 0,0 &1 = 0,1 & 0 = 0,1 & 1 = 1
目录: 第一部分 基础知识 第1章 UML简介 3 1.1 在纷繁复杂中寻求解决问题的办 3 1.2 UML的诞生 4 1.3 UML的组成 5 1.3.1 类图 5 1.3.2 对象图 6 1.3.3 用例图 7 1.3.4 状态图 7 1.3.5 顺序图 8 1.3.6 活动图 9 1.3.7 协作图 10 1.3.8 件图 11 1.3.9 部署图 11 1.4 其他特征 12 1.4.1 注释 12 1.4.2 关键字和造型 12 1.5 UML 2.0中的新图 13 1.5.1 组成图 13 1.5.2 交互纵览图 14 1.5.3 计时图 15 1.5.4 有创新也有保留的包图 15 1.6 为什么需要这么多种图 16 1.7 这不仅仅是一系列图 16 1.8 小 17 1.9 常见问题解答 17 1.10 小测验和习题 18 1.10.1 小测验 18 1.10.2 习题 18 第2章 理解面向对象 20 2.1 无处不在的对象 20 2.2 一些面向对象的概念 22 2.2.1 抽象 22 2.2.2 继承 23 2.2.3 多态性 24 2.2.4 封装 24 2.2.5 消息传递 25 2.2.6 关联 26 2.2.7 聚集 27 2.3 意义 28 2.4 小 29 2.5 常见问题解答 29 2.6 小测验和习题 30 第3章 运用面向对象 31 3.1 类的可视化表示 31 3.2 属性 32 3.3 操作 33 3.4 属性、操作和可视化表达 34 3.5 职责和约束 35 3.6 附加注释 36 3.7 类——应该做什么和如何识别它们 37 3.8 小 39 3.9 常见问题解答 39 3.10 小测验和习题 39 3.10.1 小测验 39 3.10.2 习题 40 第4章 关系 41 4.1 关联 41 4.1.1 关联上的约束 42 4.1.2 关联类 43 4.1.3 链 43 4.2 多重性 43 4.3 限定关联 45 4.4 自身关联 45 4.5 继承和泛化 46 4.5.1 找出继承关系 47 4.5.2 抽象类 48 4.6 依赖 48 4.7 类图和对象图 49 4.8 小 50 4.9 常见问题解答 51 4.10 小测验和习题 51 4.10.1 小测验 51 4.10.2 习题 51 第5章 聚集、组成、接口和实现 53 5.1 聚集 53 5.2 组成 54 5.3 组成图 54 5.4 接口和实现 55 5.5 接口和端口 58 5.5.1 可见性 58 5.5.2 作用域 59 5.6 小 59 5.7 常见问题解答 60 5.8 小测验和习题 60 5.8.1 小测验 60 5.8.2 习题 60 第6章 介绍用例 61 6.1 什么是用例 61 6.2 用例的重要性 62 6.3 举例:饮料销售机 62 6.3.1 用例“买饮料” 62 6.3.2 其他用例 63 6.4 包含用例 64 6.5 扩展用例 65 6.6 开始用例分析 66 6.7 小 66 6.8 常见问题解答 66 6.9 小测验和习题 67 6.9.1 小测验 67 6.9.2 习题 67 第7章 用例图 68 7.1 用例模型的表示 68 7.1.1 回顾饮料销售机 69 7.1.2 跟踪场景中的步骤 69 7.2 用例之间关系的可视化表示 70 7.2.1 包含 70 7.2.2 扩展 71 7.2.3 泛化 72 7.2.4 分组 73 7.3 用例图在分析过程中的作用 73 7.4 运用用例模型:举例 73 7.4.1 理解领域 73 7.4.2 理解用户 74 7.4.3 理解用例 75 7.4.4 进一步深入 76 7.5 “清查存货” 77 7.5.1 元素 77 7.5.2 关系 77 7.5.3 分组 78 7.5.4 注释 78 7.5.5 扩展 78 7.5.6 其他 78 7.6 UML“大图” 78 7.7 小 79 7.8 常见问题解答 79 7.9 小测验和习题 79 7.9.1 小测验 80 7.9.2 习题 80 第8章 状态图 81 8.1 什么是状态图 81 8.1.1 基本符号集 82 8.1.2 在状态图标中增加细节 82 8.1.3 增加转移的细节:事件和动作 83 8.1.4 增加转移的细节:保护条件 84 8.2 子状态 84 8.2.1 顺序子状态 84 8.2.2 并发子状态 85 8.3 历史状态 86 8.4 UML 2.0中的新变化 86 8.5 为什么状态图很重要 87 8.6 UML“大图” 87 8.7 小 88 8.8 常见问题解答 89 8.9 小测验和习题 89

13,654

社区成员

发帖
与我相关
我的任务
社区描述
CSDN 下载资源悬赏专区
其他 技术论坛(原bbs)
社区管理员
  • 下载资源悬赏专区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧