3.6 Java 控制流程

与任何程序设计语言一样,Java 使用条件语句和循环结构确定控制流程。

块的作用域

块(复合语句)是指由一对花括号括起来的若干条简单的 Java 语句,块确定了变量的作用域。一个块可以嵌套在另一个块中。但是,不能在嵌套的两个块中声明同名的变量。

条件语句

在 Java 中,if 语句是一个判断结构,它会准确地检测判断条件成立与否,决定是否要执行后面的语句。条件语句的格式为:

1
2
3
4
5
if ( condition ){
// statement1
// statement2
// ……..
}

当程序中存在含有分支的判断语句时,就可以用 if…else 语句处理。当判断条件成立,即执行 if 语句主体;判断条件不成立时,则会执行 else 后面的语句主体。else 子句与最邻近的 if 构成一组。if….else 语句格式如下:

1
2
3
4
5
if (condition ){
// statement1
}else{
// Statement2
}

如果需要在 if….else 里判断多个条件时,就需要 if….else if….else 语句了,格式如下:

1
2
3
4
5
6
7
8
9
if (condition1 ){
// statement1
}else if(condition2) {
// Statement2
}
…. // 多个else if( )语句
else {
// Statement3
}

switch 语句

要在许多的选择条件中找到并执行其中一个符合判断条件的语句时,除了可以使用 if…else 不断地判断之外,也可以使用另一种更方便的方式即多重选择—— switch 语句。

1
2
3
4
5
6
7
switch ( 表达式 ) {
case 选择值1: 语句主体1 ; break ;
case 选择值2: 语句主体2 ; break ;
………….
case 选择值n: 语句主体n ; break ;
default : 语句主体;
}

switch 语句执行的流程如下:

  1. switch 语句计算括号中表达式的结果是数字,字符或是枚举。
  2. 根据表达式的值检测是否符合 case 后面的选择值,若是所有 case 的选择不符合,则执行 default 所包含的语句,执行完毕即离开 switch 语句。
  3. 如果某个 case 的选择值符合表达式的结果,就会执行该 case 所包含的语句,一直遇到 break 语句后才离开switch语句。
  4. 若是没有在 case 语句结尾处加上 break 语句,则会一直执行到 switch 语句的尾端才离开 switch 语句。break 语句是跳出语句。
  5. 若是没有定义 default 该执行的语句,则什么也不会执行,直接离开 switch 语句。

while 循环语句

while 是循环语句,也是条件判断语句。当事先不知道循环该执行行多少次的时候,就要用到 while 循环。while 循环的格式如下:

1
2
3
4
5
6
7
while ( 循环条件判断) {
语句1 ;
语句2 ;
……..
语句n ;
循环条件更改 ;
}

while 循环执行的流程:

  1. 第一次进入while循环前,必须先为循环控制变量(或表达式)赋起始值。
  2. 根据判断条件的内容决定是否要继续执行循环,如果条件判断是真(true),继续执行循环主体;若条件判断值为假(false),则跳出循环执行其他语句。
  3. 执行完循环主体内的语句后,重新为循环控制变量(或表达式)赋值(增加或减少),由于while循环不会自动更改循环控制变量(或表达式)的内容,所以在 while 循环中为循环控制变量赋值的工作要由设计者自己来做,完成后再回到步骤 2 重新判断是否继续执行循环。

do…while 循环

do…while 循环也是用于未知循环执行次数的时候,而 while 循环与 do … while 循环最大的不同是:while 语句会先测试判断条件的真假,再判断是否执行循环主体,而 do …while 循环则是“先做再说”,每次都是先执行一次循环主体,然后再测试判断条件的真假,所以无论循环成立的条件是什么,使用 do … while 循环时,至少都会执行一次循环主体,语句格式:

1
2
3
4
5
6
7
do{
语句1 ;
语句2 ;
…….
语句 n ;
循环条件改变 ;
}while( 循环条件判断 ) ;

do …. While循环执行的流程:

  1. 进入 do … while 循环前,要先为循环控制变量(或表达式)赋期起始值。
  2. 直接执行循环主体,循环主体执行完毕,才开始根据判断条件的内容决定是否继续执行循环,条件判断值为真(true)时,继续执行循环主体;条件判断值为假(false)时,则跳出循环,执行其他语句。
  3. 执行完循环主体内的语句后,重新为循环控制变量(或表达式)赋值(增加或减少),由于 do … while 循环和 while 循环一样,不会自动更改循环控制变量(或表达式)的内容,所以在 do …. While 循环中赋值循环控制变量的工作要由自己来做,然后再回到步骤 2 重新判断是否继续执行循环。

for 循环

对于 while 和 do…while 两种循环来讲,操作时并不一定要明确的知道循环的次数,而如果开发者已经明确知道了循环的次数的话,那么可以使用另外一种循环语句—— for 循环。格式如下:

1
2
3
4
5
for ( 赋值初值; 判断条件; 赋值增减量 ) {
语句1 ;
……
语句n ;
}

for 循环执行的流程:

  1. 第一次进行 for 循环时,要为循环控制变量赋起始值。
  2. 根据判断条件的内容检查是否要继续执行循环,当判断条件值为真(true)时,继续执行循环主体内的语句;判断条件值为(false)时,则会跳出循环,执行其他语句。
  3. 执行完循环主体内的语句后,循环控制变量会根据增减量的要求更改循环控制变量的值,然后再回到步骤(2)重新判断是否继续执行循环。

中断控制流程语句

  1. break 语句:
    break 语句可以强迫程序中断循环,当程序执行到 break 语句时,即会离开循环,继续执行循环外的下一个语句,如果 break 语句出现在嵌套循环中的内循环,则 break 语句只会跳出当前层的循环。带标签的 break 语句会跳转到标签的语句块末,标签必须放在希望跳出的最外层循环之前,并且必须紧跟一个冒号。
  2. continue 语句:
    continue 语句可以强迫程序跳到循环的起初处,当程序运行到 continue 语句时,会停止运行剩余的循环主体,而是回到循环的开始处继续运行。如果将 continue 语句用于 for 循环中,就可以跳到 for 循环的“更新”部分。还有一种带标签的 continue 语句,将跳到与标签匹配的循环首部。
坚持原创技术分享,您的支持将鼓励我继续创作!