第 一 部 分 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的详细讲述可参见附录。


回主页教程 上一篇 下一篇