5.控制流程【Java温故系列】

参考自–《Java核心技术卷1》

控制流程

Java使用条件语句循环结构确定控制流程。


1 块作用域

块(block)即复合语句,指由一对大括号括起来的若干条简单的 Java 语句。

块确定了变量的作用域。一个块可以嵌套在另一个块中。

public static void main(String[] args){
	int n;
    ...
    {
        int k;
    } // 变量k只有在该块中才能被识别 
}

但,不能在嵌套的两个块中声明同名的变量:

public static void main(String[] args){
	int n;
    ...
    {
        int n;  //错误,无法通过编译
    } 
}

2 条件语句

if + else 语句

  • if(condition) statement
  • if(condition) statement1 else statement2

:else 子句与最邻近的 if 构成一组


3 循环

3.1 while 循环

当条件为真(true)时执行:

while(condition) statement

3.2 do/while 循环

先执行循环体,再检测循环条件。循环体至少执行一次。

do statement while(condition)

3.3 for 循环

for 循环语句是支持迭代的一种通用结构,利用每次迭代之后更新的计数器或者类似的变量来控制迭代次数。

for 语句的:

  • 第 1 部分通常用于对计数器初始化(该部分定义的变量作用域为整个循环体) ;

  • 第 2 部分给出每次新一轮循环执行前要检测的循环条件 ;

  • 第 3 部分指示如何更新计数器。

for(int i=1;i<=10;i++){
    //这三部分的内部并非固定的,需要灵活使用
	...
}

:在循环中,检测两个浮点数是否相等需要格外小心。如:for(double x=0;x!=10;x+=0.1)就可能永远不会结束。由于舍入的误差,最终可能得不到准确值(上述 0.1 无法精确地用二进制表示)。

:在 for 循环内部定义的变量,无法在循环体之外使用。因此,如果需要使用,可以先在循环体外部声明。


4 多重选择:switch 语句

处理多个选项。

Scanner in = new Scanner(System.in);
System.out.println("Select an option(1,2,3,4)");
int choice = in.nextInt();
switch(choice){
	case 1:
		...
		break;
	case 2:
		...
		break;
	case 3:
		...
		break;
	case 4:
		...
		break;
	default:
		// 1,2,3,4之外的输入
		...
		break;
}

switch 语句将从与选项值相匹配的 case 标签处开始执行直到遇到 break 语句,或者执行到 switch 语句的结束处为止。如果没有相匹配的 case 标签,而有 default 子句,就执行 default 子句(坏的输入)。

:switch 语句使用较少(因为如果缺少break语句的话,常常会引发错误)。


5 中断控制流程语句

5.1 break
  • 不带标签的break(一般使用的)
  • 带标签的break(用于跳出多重嵌套的循环语句)

带标签的break:

read_data:
while(...){
	...
	for(...){
		...
		if(...)
			break read_data;
			//跳出至标签指示的while循环
		...
	}
	...
}
//跳出 read_data 循环后继续由此开始执行以下语句
...

:事实上,可以将标签应用到任何语句中。

5.2 continue

与 break 一样,它可以中断正常的控制流程。continue 语句将控制转移到最内层循环的首部。

While(...){
	...  
	if(...) 
		continue;  //跳至循环的首部(判断循环部分)
	...  //如果执行了continue,这部分语句将在此次循环中不执行
}

如果执行了 continue ,则会直接越过 当前循环的剩余部分,立刻跳到循环首部。

:如果是 for 循环,则 continue 将直接跳至 for 循环的"更新"部分(第3部分)。

:带标签的 continue 语句,将跳到与标签匹配的循环首部。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值