运算符表达式和语句

上传人:san****019 文档编号:22741206 上传时间:2021-05-31 格式:PPT 页数:57 大小:624KB
收藏 版权申诉 举报 下载
运算符表达式和语句_第1页
第1页 / 共57页
运算符表达式和语句_第2页
第2页 / 共57页
运算符表达式和语句_第3页
第3页 / 共57页
资源描述:

《运算符表达式和语句》由会员分享,可在线阅读,更多相关《运算符表达式和语句(57页珍藏版)》请在装配图网上搜索。

1、第 三 章 运 算 符 、 表 达 式和 语 句 2.3 语 句 与 流 程 控 制语 句 是 java程 序 的 基 本 组 成 部 分 , 可 以 分成 如 下 几 类 : 例 如 , String name=“Zhangsan”; int age=24;例 如 , a=b+(c-d); / 赋 值 语 句 System.out.print(“Hello”); 2.3 语 句 与 流 程 控 制 由 一 对 花 括 号 把 几 个 语 句 括 起 来 , 这 样 就 构 成 了 复合 语 句 。 复 合 语 句 内 可 以 定 义 变 量 , 但 这 些 变 量 是 局 部变 量 。 变

2、量 声 明 语 句 ; / 变 量 的 作 用 范 围 (域 )只 在 其 语 句 1; / 所 在 的 一 对 花 括 号 内 语 句 2; 2.3 语 句 与 流 程 控 制l 通 常 , Java程 序 中 的 语 句 是 按 顺 序 执 行 ( 从 上 到下 ) 。l Java中 的 控 制 语 句 控 制 程 序 执 行 的 走 向 , 包 括 分 支( 选 择 ) 语 句 、 循 环 语 句 和 转 移 语 句 等 。l 本 教 材 将 介 绍 8种 流 程 控 制 语 句 , 见 2.3节 。 2.3 语 句 与 流 程 控 制 import语 句如 果 用 户 程 序 要 用

3、到 其 他 包 中 的 类 时 , 通 常 是 在 源 文 件 的 开 始 部 分使 用 关 键 字 import, 后 跟 包 名 和 句 点 隔 开 的 类 名 导 入 它 们 , 并 以 分号 结 尾 , 称 为 import语 句 :import 包 名 .类 名 ; import 包 名 .*; package语 句package 包 名 ;即 可 把 类 放 到 包 中 , 但 上 面 的 package语 句 必 须 是 源 文件 的 第 一 条 语 句 。 2.3 语 句 与 流 程 控 制一 、 结 构 化 程 序 设 计 中 的 三 种 控 制 结 构 顺 序 结 构 选

4、择 结 构 : 单 选 择 结 构 、 双 选 择 结 构 、 多选 择 结 构 循 环 结 构 程 序 的 3种 基 本 结 构l 顺 序 结 构 、 分 支 结 构 、 循 环 结 构 语 句 1 (a) 顺 序 结 构 语 句 2 (b) if-else二 路 分 支 结 构 语 句 1 布 尔 表 达 式 ? 语 句 2 入 口 点 出 口 点 入 口 点 出 口 点 true false (c) while循 环 结 构 语 句布 尔 表 达 式 ? 入 口 点 出 口 点 true false 2.3 语 句 与 流 程 控 制l if-else 选 择 语 句 if-el se

5、结 构 的 语 法 为 : if (bool ean表 达 式 ) 语 句 1;el se 语 句 2; if (bool ean表 达 式 ) 语 句 组 ; el se 语 句 组 ; if和 else块 中 只 有一 条 语 句 if和 else块 中 有 多条 语 句 boolean表 达 式 语 句 序 列 1 语 句 序 列 2 语 句 序 列 3 真 假 n boolean表 达 式 是 任 意 一 个 返 回 布 尔 数 据 类 型 的 表 达 式 ,而 且 必 须 是 ( 比 C或 C +要 严 格 ) 。n 与 C或 C+一 样 , 每 个 单 一 语 句 后 面 都 要

6、有 分 号 。 为 了增 强 程 序 的 可 读 性 , 应 将 if或 else后 的 语 句 用 括 起 来 。n else子 句 是 任 选 的 , 不 能 单 独 作 为 语 句 使 用 , 它 必 须 和 if语 句 配 对 使 用 , 并 且 总 是 与 离 它 最 近 的 if配 对 。int i1 = 123;int i2 = 456; if( i1i2 ) System.out.println(“The bigger one is: ”+i1);else System.out.println(“The bigger one is: ”+i2); 补 充 说 明 : if-el

7、se选 择 语 句 只 有 if 子 语 句 , 没 有 else子 语 句 ( 单 分 支 if-else语 句 ) if( boolean表 达 式 ) 语 句 序 列 1; if-else 选 择 语 句 的 变 体 情 况 表 达 式语 句 序 列 1真 假语 句 序 列 3 if-else 选 择 语 句 的 变 体 情 况 多 个 ifelse的 嵌 套 ( 多 分 支 if-else语 句 ): if( boolean表 达 式 1) 语 句 序 列 1; else if( boolean表 达 式 2) 语 句 序 列 2; else 语 句 序 列 n; 多 个 ifelse

8、的 嵌 套 ( 多 分 支 if-else语 句 ) if (表 达 式1) 语 句1;else if (表 达 式2)语 句2;else if (表 达 式3)语 句3;else语 句4;表 达 式 1 语 句 1 语 句 2 语 句 3 语 句 4表 达 式 2 表 达 式 3 多 分 支 选 择 结 构 课 堂 练 习l 习 题 2.17 2.3 语 句 与 流 程 控 制 switch 选 择 语 句 (开 关 语 句 ): switch(表 达 式) case 常 量 值1: 语 句(组); break; case 常 量 值2: 语 句(组); break; case 常 量 值N

9、: 语 句(组); break; default: 语 句(组);表 达 式 必 须 为 byte, short, int, long或 char类 型 v常 量 值 必 须 是 与 表 达 式类 型 兼 容 的 特 定 的 一 个 常量v不 允 许 有 重 复 的 case值 2.3 语 句 与 流 程 控 制switch表 达 式语 句 1 语 句 2 语 句 n 语 句 n+1.常 量 值 1 常 量 值 2 常 量 值 n defaultcase 表 达 式 expression的 返 回 值 类 型 必 须 是 这 几 种 类 型 之 一 :int、 byte、 char、 long

10、, short。 case子 句 中 的 标 号 值 value必 须 是 常 量 , 而 且 所 有 case子句 中 的 常 量 值 应 是 不 同 的 。 default子 句 是 任 选 的 。 break语 句 用 来 在 执 行 完 一 个 case分 支 后 , 使 程 序 跳 出switch语 句 , 即 终 止 switch语 句 的 执 行 。 如 果 某 个 case分 支后 没 有 break语 句 , 程 序 将 不 再 做 比 较 而 执 行 下 一 个 分 支 。 switch语 句 的 功 能 可 以 用 if-else语 句 来 实 现 , 但 某 些 情 况

11、下 , 使 用 switch语 句 更 简 炼 。2.3 语 句 与 流 程 控 制 int a = 100;int b = 20;int c; char oper = +;switch(oper) case +: c = a b; break;case -: c = a - b; break; default : c = a * b; break; 举 例 : switch 选 择 语 句 (开 关 语 句 ): 三 、 循 环 语 句 while 循 环 while( boolean表 达 式) 循 环 语 句 组; do-while循 环do 循 环 语 句 组 ;while( bool

12、ean表 达 式); for 循 环 for(变 量 初 始 化; boolean表 达 式; 递 增 变 量 的 值) 循 环 语 句 组 ;/ boolean表 达 式 即 为 “ 循 环 条 件 ”/ 循 环 语 句 (组 ), 也 称 为 “ 循 环 体 ” while语 句lwhile (boolean表 达 式) 循 环 语 句; / boolean表 达 式 即 为 , 循 环 条 件 l 只 要 boolean表 达 式 的 值 为 非0(真), 就重 复 执 行 while循 环 语 句 , 直 到 表 达 式 值为0(假)时 止 表 达 式循 环 体Y N do-while

13、语 句ldo 循 环 语 句;while (boolean表 达 式);l 首 先 执 行 语 句 , 然 后 判 断 boolean表 达 式 的 值 。l 如 果 表 达 式 为0, 结 束 while循 环 语 句 。 否 则 ,再 次 执 行 循 环 语 句 。 l 语 句 会 被 至 少 执 行 一 次 P循 环 体Y N for语 句lfor (表 达 式1; 表 达 式2; 表 达 式3) 循 环 语 句; 循 环 变 量 初 始 化( 通 常 对 循 环 变量 赋 初 值 ) 循 环 控 制 条 件(每 次 执 行 循 环语 句 前 需 判 断 ) 改 变 循 环 变 量 的

14、值( 循 环 语 句 执 行 完 一次 后 计 算 表 达 式 3的值 )(1) 计 算 表 达 式 1, (2) 计 算 表 达 式 2。 若 表 达 式 2的 值 为 true( 不 满 足 结 束 条 件 ) , 则 执 行 循 环 语 句 , 若 表 达 式 2的 值 为 false, 则 结 束 循 环 ;(3) 执 行 循 环 语 句 ;(3) 计 算 表 达 式 3, 再 次 判 断 表 达 式 2的 值 .依 此 重 复 下 去 ,直 到 表 达式 2的 值 为 false。 注 意 循 环 变 量 的 使 用l 通 过 循 环 变 量 i 的 值 来 控 制 循 环 次 数

15、。 l For循 环 的 循 环 总 次 数 是 已 知 的 。for ( i=1; i=100; i+) sum+=i; for语 句 需 要 注 意变 量 初 始 化 (表 达 式 1)、 循 环 条 件 (表 达 式 2)以 及 改变 变 量 值 (表 达 式 3)部 分 都 可 以 为 空 语 句 (但 分 号 不能 省 ), 三 者 均 为 空 的 时 候 , 相 当 于 一 个 无 限 循 环 。 在 初 始 化 部 分 和 迭 代 部 分 可 以 使 用 逗 号 语 句 , 来 进行 多 个 操 作 。 逗 号 语 句 是 用 逗 号 分 隔 的 语 句 序 列 。for( in

16、t i=0, int j=10; ij; i+, j-) 选 择 三 种 循 环 的 一 般 原 则l 如 果 循 环 次 数 已 知 , 用forl 如 果 循 环 次 数 未 知 , 用whilel 如 果 循 环 体 至 少 要 执 行 一 次 , 用do-whilel 这 只 是 “ 一 般 ” 原 则 , 不 是 “ 原 则 ” int n = 1, sum = 0;while ( n0); int sum =0;for( int i=1; i=10; i+ ) sum += i;while循 环 do-while循 环 for循 环三 、 循 环 语 句 举 例 例 题 分 析 :

17、 素 数 问 题l 给 定 一 个 正 整 数 n=91,判 断 它 是 不 是 素 数 。l 判 断 标 准 : 素 数 只 能 被 自 身 和 1整 除 。 例 如 ,l 91%1=0, 91%91=0.l 思 路 :l 将 2至 n-1之 间 的 所 有 整 数 , 同 n进 行 求 余 操 作 , 判断 余 数 是 否 为 0, 如 果 发 现 任 意 一 次 为 0, 则 n必 然不 是 素 数 。 l 循 环 语 句 。 程 序 结 构public class App3 public static void main(String args) /定 义 变 量 、 初 始 化 /

18、进 行 计 算 、 处 理 / 输 出 结 果 public class PrimeNum public static void main(String args) int n=91;int x; /循 环 变 量boolean s=true;for(x=2; x=n-1; x+) if(n%x=0) s=false;if(s) System.out.println(+n+是 素 数 ); else System.out.println(+n+非 素 数 ); 课 堂 练 习 1l 数 的 阶 乘 问 题l 对 于 任 意 一 个 正 整 数 (=10), 例 如l int n=8;l 求 阶

19、 乘 数 n!, 即 1x2x3x.x(n-1)xn 实 验 任 务 1l 求 所 有 的 “ 水 仙 花 数 ”l “ 水 仙 花 数 ” 是 一 个 三 位 数 , 其 各 位 数 字 的 立方 和 恰 好 等 于 该 数 本 身 。l 例 如 , 153是 水 仙 花 数 。 嵌 套 循 环While循 环 语 句 的 嵌 套 ; while ( ) while ( ) for ( ; ; ) while ( ) do while ( ); 例 题 循 环 的 嵌 套l 在 屏 幕 上 打 印 如 下 的 图 案l 提 示 :l 尝 试 在 屏 幕 上 输 出 1行 “ *”, 用 循

20、环 实 现 l 使 用 System.out.print(“*”)输 出 一 个 字 符 *l 再 连 续 的 输 出 5行 “ *”?l 如 何 控 制 输 出 的 *的 个 数 及 位 置 ? public class Triangle public static void main(String args) /i 为 行 的 循 环 控 制 变 量for(int i=1;i=5;i+) /先 打 印 每 行 前 的 空 格for(int j=1;j=10-i;j+)System.out.print( );/打 印 每 行 的 *for(int j=1;j=2*i-1;j+)System.

21、out.print(*);System.out.println( ); /换 行 课 堂 练 习 3l 将 100元 兑 换 成 10元 、 5元 和 1元 的 硬 币 ,l 要 求 : 每 种 硬 币 至 少 有 1个l 求 不 同 的 兑 换 方 法 , 输 出 在 屏 幕 上 。 实 验 任 务 2l 在 屏 幕 上 打 印 9x9乘 法 表 四 、 break 和 continue 语 句 break 语 句 在 循 环 中 用 于 立 即 从 当 前 循 环 终 止 控 制 。 遇 到 break 语 句 时 , 将 跳 出 当 前 循 环 语 句 (while, dowhile,

22、for)。 continue 语 句 则 是 从 当 前 执 行 位 置 跳 至 循 环 的 开始 处 ( 重 新 开 始 下 一 次 循 环 ) 。 continue 语 句 之 后 的 语 句 将 不 再 执 行 。 阅 读 程 序 2.5import javax.swing.JOptionPane; /引 用 类 JOptionPanepublic class SimappApp7 public static void main(String args) String output= ; for(int i=1; i=10; i+) output+= n 第 + i + 次 循 环 开

23、始 ; ; if(i=2) continue; if(i=3) break; output += n第 +i+ 次 循 环 结 束 ! ; output+= n结 束 整 个 程 序 的 输 出 工 作 ! ! ! ; JOptionPane.showMessageDialog(null, output); System.exit(0); 四 、 break 和 continue 语 句l 带 标 号 的 break语 句 在 Java中 , 可 以 为 每 个 语 句 块 (组 )加 一 个 标 号 , 一 个 代 码 块 通常 是 用 大 括 号 括 起 来 的 一 段 语 句 代 码 。

24、 加 标 号 的 格 式 为 : BlockLabel: 语 句 块 ; l 标 号 的 命 名 规 则 , 同 标 识 符 (字 母 、 数 字 、 下 划 线 ,$) l break语 句 的 第 二 种 使 用 情 况 就 是 跳 出 它 所 指 定 的 块 , 并 从 紧跟 该 块 后 的 第 一 条 语 句 处 执 行 。break BlockLabel;l 使 用 在 switch, for, while, dowhile循 环 语 句 中 。 a: /标 记 代 码 块 a b: /标 记 代 码 块 b c: /标 记 代 码 块 c break b; /这 段 语 句 将 不

25、 执 行 /代 码 块 c结 束 /这 段 语 句 也 不 执 行 /代 码 块 b结 束 /从 这 段 语 句 开 始 执 行 /代 码 块 a结 束 四 、 break 和 continue 语 句 四 、 break 和 continue 语 句l 带 标 号 的 continue语 句l 普 通 的 continue语 句 只 能 结 束 其 所 在 当 前 循 环 语 句的 一 次 执 行 。l 在 嵌 套 循 环 结 构 中 , 带 标 号 的 continue语 句 能 够 结束 标 号 所 在 的 循 环 语 句 的 一 次 执 行 ( 可 能 是 最 外 层的 循 环 语 句

26、 ) l 语 法 : continue BlockLable ; 四 、 break 和 continue 语 句outer: for( int i=0; i10; i+ ) /外 层 循 环 inner: for( int j=0; j10; j+ ) /内 层 循 环 if( ij ) continue outer; /内 层 循 环 结 束 /外 层 循 环 结 束 实 验 任 务 3 l 针 对 之 前 的 编 写 的 判 断 素 数 的 程 序l 通 过 使 用 break或 者 continue语 句 , 提 高 程 序执 行 的 效 率 ( 从 减 少 循 环 次 数 的 角 度

27、 出 发 ) 本 周 作 业l P50, l 习 题 4.(2), 4.(6) 2.4 数 组在 Java语 言 中 , 数 组 是 一 种 最 简 单 的 引 用 数 据 类 型 ,数 组 实 际 上 是 一 组 变 量 或 对 象 实 例 , 其 类 型 是 相同 的 。可 以 在 程 序 中 声 明 各 种 基 本 类 型 和 引 用 类 型 的 数组 。与 C和 C+相 似 , Java语 言 数 组 在 使 用 时 须 经 过 声明 、 创 建 、 初 始 化 三 个 步 骤 。 一 、 数 组 的 声 明 、 创 建 、 初 始 化 与 释 放数 组 的 声 明 是 定 义 数 组

28、 变 量 标 识 符 , 并 不 为数 组 分 配 内 存 的 存 储 空 间 。 Java语 言 支 持 两 种完 全 等 价 的 声 明 格 式 :格 式 一 : char s; Point p;格 式 二 : char s; Point p;注 意 : Java语 言 在 声 明 数 组 时 不 允 许 指 定 数组 大 小 。 数 组 的 创 建 是 为 数 组 的 元 素 分 配 存 储 空 间 并进 行 自 动 初 始 化 , 创 建 数 组 使 用 “ new” 关 键字 , 格 式 如 下 :char s; s = new char10;或 者 将 声 明 和 创 建 连 在

29、一 起 完 成 , 如char s = new char10;数 组 的 变 量 标 识 符 是 一 个 引 用 , 数 组 的 创 建 使 得 这 个引 用 指 向 存 储 数 组 的 内 存 的 首 地 址 。 除 了 自 动 初 始 化 之 外 , 还 可 以 采 用 赋 值 初 始 化 和 静态 初 始 化 的 方 法 。赋 值 初 始 化 方 法 即 通 过 执 行 语 句 为 数 组 的 元 素 赋 值 。 s0=a; s1=b;静 态 初 始 化 即 是 用 大 括 号 将 数 组 元 素 的 值 一 一 列 出 的方 式 , 即 形 如 char s = a , c , d ,

30、 f;此 时 , 可 以 省 略 数 据 的 创 建 语 句 ( 需 注 意 ) 。 数 组 的 释 放 不 需 要 程 序 员 显 式 地 操 作 , 不 再 使 用 的 数组 由 系 统 作 为 垃 圾 自 动 处 理 。 数 组 元 素 的 引 用 ( 访 问 ) l 数 组 元 素 的 引 用 方 式 为 : arrayNameindex 每 个 数 组 都 有 一 个 属 性 length指 明 它 的 长 度 , 例如 : arrayName.length指 明 数 组 arrayName的 长 度 。 index为 数 组 下 标 , 它 可 以 为 整 型 常 数 或 表 达

31、式 ,下 标 从 0开 始 , 到 length-1结 束 。 数 组 与 循 环 的 结 合l 输 出 数 组 的 内 容l int a =1,2 ,3, 4, i;l for(i=0; ia.length; i+) System.out.println(ai); 编 写 程 序 , 用 起 泡 法 对 10个 数 排 序 (按 由 小 到 大 顺序 )。起 泡 法 的 思 路 是 : 将 相 邻 两 个 数 比 较 , 将 小 的 调 到前 头 。 见 图 5.2。然 后 进 行 第 2趟 比 较 , 对 余 下 的 前 面 5个 数 按 上 法 进行 比 较 , 见 图 5.3。 图 1

32、 图 2 可 以 推 知 , 如 果 有 n个 数 , 则 要 进 行 n-1趟 比 较 (和 交换 )。 在 第 1趟 中 要 进 行 n-1次 两 两 比 较 , 在 第 j趟 中 要进 行 n-j次 两 两 比 较 。根 据 以 上 思 路 写 出 程 序 , 今 设 n=10, 本 例 定 义 数 组长 度 为 11, a 0 不 用 , 只 用 a 1 a 10 , 以符 合 人 们 的 习 惯 。 实 验 任 务 4: l 依 据 上 述 原 理 。l 编 写 程 序 对 键 盘 输 入 的 10个 整 数 进 行 排 序 。 对 数 组 名 的 理 解 :l 内 存 中 每 个

33、区 域 都 有 个 地 址 。 数 组 是 在 内 存 中 开 辟 的 一个 连 续 区 域 。 数 组 名 则 实 际 上 存 储 的 是 该 连 续 区 域 的 首地 址 。l 下 面 的 例 子 中 定 义 了 两 个 数 组 a和 b, 存 储 的 实 际 上 都 是两 个 内 存 区 域 的 首 地 址 。float b=new float5; b 0 x785BA b0b4 float a=new float5;a 0 x712334 a0a4 对 数 组 名 的 理 解 :l 当 执 行 一 条 a=b; 语 句 后 。 那 么 a实 际 上 存 储 的 就 不 是原 来 的 地

34、 址 而 是 b原 来 指 向 的 地 址 0 x785ba。 那 么 此 时 a和 b都 指 向 了 同 一 个 内 存 区 的 地 址 。float b=new float5; b 0 x785BA b0b4 float a=new float5;a 0 x712334 a0a4 例 子 分 析 1 public class Example2_3 public static void main(String args ) int a =100,200,300; int b =10,11,12,13,14,15,16; b=a; b0=123456; a0=500; System.out.p

35、rintln(数 组 a:+a0+,+a1+,+a2); System.out.println(数 组 b:+b0+,+b1+,+b2); System.out.println(数 组 b的 长 度 :+b.length); 在 Java语 言 中 没 有 多 维 数 组 , 而 是 通 过 定 义 数组 的 数 组 实 现 多 维 数 组 , 多 维 数 组 的 声 明 、创 建 和 初 始 化 与 一 维 数 组 相 似 , 如int twoDim = new int4;即 声 明 和 创 建 了 一 个 有 4个 元 素 的 数 组 , 每 个元 素 都 是 一 个 数 组 。二 、 多 维 数 组 (暂 时 不 看 )

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!