第 一 部 分 Java入 门 第 四 章 流 控 制 (续 ) 郁欣 孙元 王曦东 王克宏 4.1.4返 回 语 句 return return语 句 从 当 前 方 法 中 退 出 ,返 回 到 调 用 该 方 法 的 语 句 处 , 句 继 续 程 序 的 执 行 。 (有 关 方 法 的 内 容 ,我 们 将 在 第 六 章 详 细 讲) 是 一 个 方 法 )。 返 回 语 句 有 两 种 格 式 : 1.return expression 返 回 一 个 值 给 调 用 该 方 法 的 语 句 ,返 回 值 的 数 据 类 型 必 须 ? 方 法 声 明 中 的 返 回 值 类 型 一 致 。 可 以 使 用 强 制 类 型 转 换 来 使 类 型 一 致 。 2.return 当 方 法 说 明 中 用 void声 明 返 回 类 型 为 空 时 ,应 使 用 这 种 格 式 , ? 不 返 回 任 何 值 。 return 语 句 通 常 用 在 一 个 方 法 体 的 最 后 ,以 退 出 该 方 法 并 返 一 个 值 。 Java中 ,单 独 的 return语 句 用 在 一 个 方 法 体 的 中 间 时 ,会 产 生 编 译 错 误 ,因 为 这 时 ? 有 一 些 语 句 执 行 不 到 。 但 可 以 通 过 把 return语 句 嵌 入 某 些 语 句 (如 if-else)来 使 程 序 在 未 执 ? 完 方 法 中 的 所 有 语 句 时 退 出 ,例 如 : int method (int num) { ∥ return num; ∥will cause compile time error if (num>0) return num; …… ∥ may or may not be executed ∥depending on the value of num § 4.2循 环 语 句 循 环 语 句 的 作 用 是 反 复 执 行 一 段 代 码 ,直 到 满 足 终 止 循 环 ? 条 件 为 止 ,一 个 循 环 一 般 应 包 括 四 部 分 内 容 : 1.初 始 化 部 分 (initialization):用 来 设 置 循 环 的 一 些 初 始 条 件 , ? 计 数 器 清 零 等 。 2.循 环 体 部 分 (body):这 是 反 复 循 环 的 一 段 代 码 ,可 以 是 单 一 ? 一 条 语 句 ,也 可 以 是 复 合 语 句 。 3.迭 代 部 分 (iteration):这 是 在 当 前 循 环 结 束 ,下 一 次 循 环 开 始 ? 执 行 的 语 句 ,常 常 用 来 使 计 数 器 加 1或 减 1。 4.终 止 部 分 (termination):通 常 是 一 个 布 尔 表 达 式 ,每 一 次 循 环 要 对 该 表 达 式 求 值 ,以 验 证 是 否 满 足 循 环 终 止 条 件 。 Java中 提 供 的 循 环 语 句 有 :while语 句 ,do-while语 句 和 for语 句 ,下 分 别 介 绍 。 4.2.1while语 句 while语 句 实 现 "当 型 "循 环 ,它 的 一 般 格 式 为 ; [initialization] while (termination){ body; [iteration;] } 1.当 布 尔 表 达 式 (termination)的 值 为 true时 ,循 环 执 行 大 括 号 中 语 句 。 并 且 初 始 化 部 分 和 迭 代 部 分 是 任 选 的 。 2.while语 句 首 先 计 算 终 止 条 件 ,当 条 件 满 足 时 ,才 去 执 行 循 环 ? 中 的 语 句 。 这 是 "当 型 "循 环 的 特 点 。 4.2.2 do-while语 句 do-while 语句实现"直到型"循环,它的一般格式为: [initialization] do { body; [iteration;] } while (termination); 1.do-while语 句 首 先 执 行 循 环 体 ,然 后 计 算 终 止 条 件 ,若 结 果 为t rue,则 循 环 执 行 大 括 号 中 的 语 句 ,直 到 布 尔 表 达 式 的 结 果 为 false。 2.与 while语 句 不 同 的 是 ,do-while语 句 的 循 环 体 至 少 执 行 一 次 , ? 是 "直 到 型 "循 环 的 特 点 。 4.2.3 for语 句 for语 句 也 用 来 实 现 "当 型 "循 环 ,它 的 一 般 格 式 为 : for (initialization; termination; iteration){ body; } 1.for语 句 执 行 时 ,首 先 执 行 初 始 化 操 作 ,然 后 判 断 终 止 条 件 ? 否 满 足 ,如 果 满 足 ,则 执 行 循 环 体 中 的 语 句 ,最 后 执 行 迭 代 部 分 。 完 成 一 次 循 环 后 ,重 新 判 断 ? 止 条 件 。 2.可 以 在 for语 句 的 初 始 化 部 分 声 明 一 个 变 量 ,它 的 作 用 域 为 ? 个 for 语 句 。 3.for语 句 通 常 用 来 执 行 循 环 次 数 确 定 的 情 况 (如 对 数 组 元 素 ? 行 操 作 ),也 可 以 根 据 循 环 结 束 条 件 执 行 循 环 次 数 不 确 定 的 情 况 。 4.在 初 始 化 部 分 和 迭 代 部 分 可 以 使 用 逗 号 语 句 ,来 进 行 多 个 ? 作 。 逗 号 语 句 是 用 逗 号 分 隔 的 语 句 序 列 。 例 如 : for( i=0, j=10; i<j; i++, j--){ …… } 5.初 始 化 、 终 止 以 及 迭 代 部 分 都 可 以 为 空 语 句 (但 分 号 不 能 ? ),三 者 均 为 空 的 时 候 ,相 当 于 一 个 无 限 循 环 。 4.2.4 continue语 句 1.continue语 句 用 来 结 束 本 次 循 环 ,跳 过 循 环 体 中 下 面 尚 未 执 的 语 句 ,接 着 进 行 终 止 条 件 的 判 断 ,以 决 定 是 否 继 续 循 环 。 对 于 for语 句 ,在 进 行 终 止 条 件 ? 判 断 前 ,还 要 先 执 行 迭 代 语 句 。 它 的 格 式 为 : continue; 2.也 可 以 用 continue跳 转 到 括 号 指 明 的 外 层 循 环 中 ,这 时 的 格 为 continue outerLable; 例 如 : outer: for( int i=0; i<10; i++ ){ ∥外层循环 for( int j=0; j<20; j++ ){ ∥内层循环 if( j>i ){ …… continue outer; } …… } …… } 该 例 中 ,当 满 足 j>i的 条 件 时 ,程 序 执 行 完 相 应 的 语 句 后 跳 转 ? 外 层 循 环 ,执 行 外 层 循 环 的 迭 代 语 句 i++;然 后 开 始 下 一 次 循 环 。 4.2.5举 例 例 4.4 下 例 分 别 用 while、 do-while和 for语 句 实 现 累 计 求 和 。 public class Sum{ public static void main( String args[] ){ System.out.println("\n** while statement **"); int n=10,sum=0; ∥initialization while( n>0 ){ ∥termination sum+=n; ∥body n--; ∥iteration } System.out.println("sum is "+sum); System.out.println("\n** do_while statement **"); n=0; ∥initialization sum=0; do{ sum+=n; ∥body n++; ∥iteration }while( n<=10 ); ∥termination System.out.println("sum is "+sum); System.out.println("\n** for statement **"); sum=0; for( int i=1; i<=10; i++){ ∥initialization,termination,iteration sum+=i; } System.out.println("sum is "+sum); } } 运行结果为: C:\>java Sum ** while statement ** sum is 55 ** do_while statement ** sum is 55 ** for statement ** sum is 55 可以从中来比较这三种循环语句,从而在不同的场合选择合适的语句。 例4.5 求100~200间的所有素数 public class PrimeNumber{ public static void main( String args[] ){ System.out.println(" ** prime numbers between 100 and 200 **"); int n=0; outer:for(int i=101;i<200;i+=2){ ∥outer loop int k=15; ∥select for convinence for(int j=2;j<=k;j++){ ∥inner lop if( i%j==0 ) continue outer; } System.out.print(" "+i); n++; ∥output a new line if( n<10 ) ∥after 10 numbers continue; System.out.println(); n=0; } System.out.println(); } } 运行结果为: C:\>java PrimeNumber ** prime numbers between 100 and 200 ** 101 103 107 109 113 127 131 137 139 149 151 157 163 167 173 179 181 191 193 197 199 该 例 通 过 一 个 嵌 套 的 for语 句 来 实 现 。 !U4§ 4.3例 外 处 理 语 句 例 外 处 理 语 句 包 括 try、 catch、 finally以 及 throw语 句 。 与 C、 C++ 相 比 ,例 外 处 理 语 句 是 Java所 特 有 的 。 我 们 将 在 第 八 章 作 专 门 的 介 绍 。 !U4§ 4.4 注 释 语 ? Java中 可 以 采 用 三 种 注 释 方 式 : 1 ∥ 用于单行注释。注释从∥开始,终止于行尾。 2 /* … */ 用于多行注释。注释从/*开始,到*/结束,且这种注释不能互相嵌套。 3 /** … */ 是Java所特有的doc注释。它以/**开始,到*/结束。这种注释主要是 为支持JDK工具javadoc而采用的。javadoc能识别注释中用标记@标识的一些特殊变量,并把 doc注释加入它所生成的HTML文件。对javadoc的详细讲述可参见附录。 |