千家信息网

JAVA中的流控制语句有哪些

发表于:2025-01-19 作者:千家信息网编辑
千家信息网最后更新 2025年01月19日,本篇内容主要讲解"JAVA中的流控制语句有哪些",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"JAVA中的流控制语句有哪些"吧!与 C、 C++相 同 ,J
千家信息网最后更新 2025年01月19日JAVA中的流控制语句有哪些

本篇内容主要讲解"JAVA中的流控制语句有哪些",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"JAVA中的流控制语句有哪些"吧!

与 C、 C++相 同 ,Java程 序 通 过 流 控 制 来 执 行 程 序 流 ,完 成 一 定 的 任 务 。 程 序 流 是 由 若 干
个 语 句 组 成 的 。 语 句 可 以 是 单 一 的 一 条 语 句 ( 如 c=a+b; ),也 可 以 是 用 大 括 号 {}括 起 来 的 一 个
复 合 语 句 。

下 面 我 们 分 别 来 介 绍 Java中 的 流 控 制 语 句 ,包 括

1.分 支 语 句 :if-else, break, switch, return.

2.循 环 语 句 :while, do-while, for, continue.

3.例 外 处 理 语 句 :try-catch-finally, throw

最 后 我 们 简 单 介 绍 一 下 注 释 语 句 。

§ 4.1分 支 语 句

分 支 语 句 提 供 了 一 种 控 制 机 制 ,使 得 程 序 的 执 行 可 以 跳 过 某 些 语 句 不 执 行 ,而 转 去 执
行 特 定 的 语 句 。

4.1.1条 件 语 句 if-else.

if-else语 句 根 据 判 定 条 件 的 真 假 来 执 行 两 种 操 作 中 的 一 种 , 它 的 格 式 为 :

if(boolean-expression)
statement1;
[else
statement2;]

1.布 尔 表 达 式 boolean-expression是 任 意 一 个 返 回 布 尔 型 数 据 的 表 达 式 (这 比 C、 C++的 限 制
要 严 格 )。

2.每 个 单 一 的 语 句 后 都 必 须 有 分 号 。

3.语 句 statement1,statement2可 以 为 复 合 语 句 ,这 时 要 用 大 括 号 {} 括 起 。 建 议 对 单 一 的 语 句
也 用 大 括 号 括 起 ,这 样 程 序 的 可 读 性 强 ,而 且 有 利 于 程 序 的 扩 充 (可 以 在 其 中 填 加 新 的 语 句
)。 {}外 面 不 加 分 号 。

4.else子 句 是 任 选 的 。

5.若 布 尔 表 达 式 的 值 为 true,则 程 序 执 行 statement1,否 则 执 行 st atement2。

6.if-else语 句 的 一 种 特 殊 形 式 为 :

if(expression1){
statement1
}else if (expression2){
statement2
}……
}else if (expressionM){
statementM
}else {
statementN
}
@@@[
else子句不能单独作为语句使用,它必须和if配对使用。else总是与离它最近的if配对
。可以通过使用大括号{}来改变配对关系。
7.举例:
例4.1 比较两个数的大小,并按从小到大的次序输出。
@@@[
public class CompareTwo{
public static void main( String args[] ){
double d1=23.4;
double d2=35.1;
if(d2>=d1)
System.out.println(d2+" >= "+d1);
else
System.out.println(d1+" >= "+d2);
}
}
运行结果为:
C:>java CompareTwo

35.1 >= 23.4

例 4.2 判 断 某 一 年 是 否 为 闰 年 。

闰 年 的 条 件 是 符 合 下 面 二 者 之 一 :① 能 被 4整 除 ,但 不 能 被 10 0整 除 ;② 能 被 4整 除 ,又 能 被
100整 除 。

public class LeapYear{
public static void main( String args[] ){
int year=1989; //method 1
if( (year%4==0 && year0!=0) || (year%400==0) )
System.out.println(year+" is a leap year.");
else
System.out.println(year+" is not a leap year.");
year=2000; //method 2
boolean leap;
if( year%4!=0 )
leap=false;
else if( year0!=0 )
leap=true;
else if( year%400!=0 )
leap=false;
else
leap=true;
if( leap==true )
System.out.println(year+" is a leap year.");
else
System.out.println(year+" is not a leap year.");
year=2050; //method3
if( year%4==0){
if( year0==0 ){
if( year%400==0)
leap=true;
else
leap=false;
}else
leap=false;
}else
leap=false;
if( leap==true )
System.out.println(year+" is a leap year.");
else
System.out.println(year+" is not a leap year.");
}
}
运行结果为
C:>java LeapYear
1989 is not a leap year.
2000 is a leap year.
2050 is not a leap year.

该 例 中 ,方 法 1用 一 个 逻 辑 表 达 式 包 含 了 所 有 的 闰 年 条 件 ,方 法 2使 用 了 if-else语 句 的 特 殊
形 式 ,方 法 3则 通 过 使 用 大 括 号 {}对 if-else进 行 匹 配 来 实 现 闰 年 的 判 断 。 大 家 可 以 根 据 程 序 来
对 比 这 三 种 方 法 ,体 会 其 中 的 联 系 和 区 别 ,在 不 同 的 场 合 选 用 适 合 的 方 法 。

4.1.2多 分 支 语 句 switch

switch 语 句 根 据 表 达 式 的 值 来 执 行 多 个 操 作 中 的 一 个 ,它 的 一 般 格 式 如 下 :

switch (expression){
case value1 : statement1;
break;
case value2 : statement2;
break;
…………
case valueN : statemendN;
break;
[default : defaultStatement; ]
}

1.表 达 式 expression可 以 返 回 任 一 简 单 类 型 的 值 (如 整 型 、 实 型 、 字 符 型 ),多 分 支 语 句 把
表 达 式 返 回 的 值 与 每 个 case子 句 中 的 值 相 比 。 如 果 匹 配 成 功 ,则 执 行 该 case子 句 后 的 语 句 序
列 。

2.case子 句 中 的 值 valueI必 须 是 常 量 ,而 且 所 有 case子 句 中 的 值 应 是 不 同 的 。

3.default子 句 是 任 选 的 。 当 表 达 式 的 值 与 任 一 case子 句 中 的 值 都 不 匹 配 时 ,程 序 执 行
default后 面 的 语 句 。 如 果 表 达 式 的 值 与 任 一 case子 句 中 的 值 都 不 匹 配 且 没 有 default子 句 ,则 程
序 不 作 任 何 操 作 ,而 是 直 接 跳 出 switch语 句 。

4.break语 句 用 来 在 执 行 完 一 个 case分 支 后 ,使 程 序 跳 出 switch语 句 ,即 终 止 switch语 句 的 执 行
。 因 为 case子 句 只 是 起 到 一 个 标 号 的 作 用 ,用 来 查 找 匹 配 的 入 口 并 从 此 处 开 始 执 行 ,对 后 面
的 case子 句 不 再 进 行 匹 配 ,而 是 直 接 执 行 其 后 的 语 句 序 列 , 因 此 应 该 在 每 个 case分 支 后 ,要 用
break来 终 止 后 面 的 case分 支 语 句 的 执 行 。

在 一 些 特 殊 情 况 下 ,多 个 不 同 的 case值 要 执 行 一 组 相 同 的 操 作 ,这 时 可 以 不 用 break。

5.case分 支 中 包 括 多 个 执 行 语 句 时 ,可 以 不 用 大 括 号 {}括 起 。

6.switch语 句 的 功 能 可 以 用 if-else来 实 现 ,但 在 某 些 情 况 下 ,使 用 switch语 句 更 简 炼 ,可 读 性 强
,而 且 程 序 的 执 行 效 率 提 高 。

7.举 例 :

例 4.3.根 据 考 试 成 绩 的 等 级 打 印 出 百 分 制 分 数 段 。

public class GradeLevel{
public static void main( String args[] ){
System.out.println(" ** first situation **");
char grade=´C´; //normal use
switch( grade ){
case ´A´ : System.out.println(grade+" is 85~100");
break;
case ´B´ : System.out.println(grade+" is 70~84");
break;
case ´C´ : System.out.println(grade+" is 60~69");
break;
case ´D´ : System.out.println(grade+" is <60");
break;
default : System.out.println("input error");
}
System.out.println(" ** second situation **");
grade=´A´; ∥creat error without break statement
switch( grade ){
case ´A´ : System.out.println(grade+" is 85~100");
case ´B´ : System.out.println(grade+" is 70~84");
case ´C´ : System.out.println(grade+" is 60~69");
case ´D´ : System.out.println(grade+" is <60");
default : System.out.println("input error");
}
System.out.println(" ** third situation **");
grade=´B´; ∥several case with same operation
switch( grade ){
case ´A´ :
case ´B´ :
case ´C´ : System.out.println(grade+" is >=60");
break;
case ´D´ : System.out.println(grade+" is <60");
break;
default : System.out.println("input error");
}
}
}
运行结果为
C:>java GradeLevel
**** first situation ****
C is 60~69
**** second situation ****
A is 85~100
A is 70~84
A is 60~69
A is <60
input error
**** third situation ****
B is >=60

从 该 例 中 我 们 可 以 看 到 break语 句 的 作 用 。

4.1.3 break语 句

1.在 switch语 中 ,break语 句 用 来 终 止 switch语 句 的 执 行 。 使 程 序 从 switch语 句 后 的 第 一 个 语 句
开 始 执 行 。

2.在 Java中 ,可 以 为 每 个 代 码 块 加 一 个 括 号 ,一 个 代 码 块 通 常 是 用 大 括 号 {}括 起 来 的 一 段
代 码 。 加 标 号 的 格 式 如 下 :

BlockLabel: { codeBlock }

break语 句 的 第 二 种 使 用 情 况 就 是 跳 出 它 所 指 定 的 块 ,并 从 紧 跟 该 块 的 第 一 条 语 句 处 执
行 。 其 格 式 为 :

break BlockLabel;
例如:
a:{…… //标记代码块a
b: {…… //标记代码块b
c: {…… //标记代码块c
break b;
…… //will not be executed
}
…… //will not be executed
}
…… /execute from here
}

3.与 C、 C++不 同 ,Java中 没 有 goto语 句 来 实 现 任 意 的 跳 转 ,因 为 g oto语 句 破 坏 程 序 的 可 读 性
,而 且 影 响 编 译 的 优 化 。 但 是 从 上 例 可 以 看 出 ,Java用 break来 实 现 goto语 句 所 特 有 的 一 些 优 点
。 如 果 break后 所 指 定 的 标 号 不 是 一 个 代 码 块 的 标 号 ,而 是 一 个 语 句 ,则 这 时 break完 全 实 现
goto的 功 能 。 不 过 应 该 避 免 这 种 方 式 的 使 用 。   ? (未 完 待 续 )
4.1.4返 回 语 句 return

return语 句 从 当 前 方 法 中 退 出 ,返 回 到 调 用 该 方 法 的 语 句 处 , 并 从 紧 跟 该 语 句 的 下 一 条 语
句 继 续 程 序 的 执 行 。 (有 关 方 法 的 内 容 ,我 们 将 在 第 六 章 详 细 讲 述 。 前 面 例 子 中 的 main( )就
是 一 个 方 法 )。 返 回 语 句 有 两 种 格 式 :

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语 句 首 先 执 行 循 环 体 ,然 后 计 算 终 止 条 件 ,若 结 果 为 true,则 循 环 执 行 大 括 号 中 的
语 句 ,直 到 布 尔 表 达 式 的 结 果 为 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(" ** 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(" ** 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(" ** 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 loop
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文件。

到此,相信大家对"JAVA中的流控制语句有哪些"有了更深的了解,不妨来实际操作一番吧!这里是网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

语句 注释 循环 结果 运行 标记 控制 代码 C++ 内容 学习 不同 合适 实用 更深 特殊 从小到大 两个 中用 从中 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 信息安全工程网络安全的股东 东方京海网络安全监测装置 排课系统数据库设计 县级融媒体中心网络安全管理制度 南昌中兴软件开发 endnote漫游数据库 用于存放数据库数据和程序 软件开发的领域分析 豆张庄镇网络安全宣传 原神小米服务器有可能关闭吗 潜渊症多人联机服务器Ip 如何通过ftp来访问数据库 滦州品牌软件开发常见问题 沈阳电脑软件开发公司 二代测序会有一些无效数据库 武汉bgp高防服务器 文件服务器可以放在虚拟机吗 法宣网络安全知识答案 从化软件开发专业哪个好 怀柔区品质软件开发设计 信息安全工程网络安全的股东 数据库怎么删除特定人名 句容管理系统软件开发 网络安全科技博览会 王牌战争的服务器维护是什么意思 sql查询对数据库影响 青岛游戏软件开发学校 企业软件开发定制公司 修改数据库安全性 宜章租房软件开发
0