BBS水木清华站∶精华区

发信人: FrankCH (小花花), 信区: Java 
标  题: Java教程(六) 
发信站: BBS 水木清华站 (Sun Jul 27 12:12:13 1997) 
 
 
                             第 一 部 分 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的详细讲述可参见附录。 
 
 
-- 
           ^_^ ^_^ ^_^ ^_^ ^_^ ^_^^_^ ^_^ ^_^ ^_^ ^_^ ^_^^_^ ^_^ ^_^ ^_^ ^_^ ^_^^_^ ^_^ ^_^ ^_^ ^_^ ^_^^_^ ^_^ ^_^ ^_^ ^_^ ^_^^_^ ^_^ ^_^ ^_^ ^_^ ^_^ 
^_^ ^_^ ^_^ ^_^ ^_^ ^_^ [s[4;65HO[3;66HO[3;67HO[3;68HO[4;69HO[5;69HO[6;68HO[7;67HO[8;65HO[7;63HO[6;62HO[5;61HO[4;61HO[3;62HO[3;63HO[3;64HO[u 
              Welcome EveryOne! 
 
※ 来源:·BBS 水木清华站 bbs.net.tsinghua.edu.cn·[FROM: 166.111.74.158] 

BBS水木清华站∶精华区