Java 流程控制

Java 提供两种基本的流程控制结构:分支结构和循环结构。

一、顺序结构

顺序结构就是程序从上到下逐行执行。

二、分支结构

1. if

1
2
3
4
5
if (条件){
···
}else{
···
}

2. switch

1
2
3
4
5
6
7
8
9
10
11
switch(表达式){
case 数值1:
语句1;
break;
case 数值2:
语句2;
break;
...
default:
语句n;
}
  • 先计算表达式的结果,然后根据结果执行相应的 case ,若结果没有对应语句,则执行 default: 之后的语句
  • 表达式结果可以是:整数、String 、枚举
  • case n: 仅起指示作用而不起分隔作用,若没有 break ,则会一直执行到 switch 结束

三、循环结构

1. while

1
2
3
while(循环条件){
循环体;
}

当循环条件为 时,执行循环体,继续判断循环条件;当循环条件为 时,停止循环。

  • 循环体应该能使循环条件发生改变,否则就会死循环。
  • 条件为假时,一次都不执行。

2. do while

1
2
3
do{
循环体;
}while(循环条件)

先执行一次循环体;判断循环条件,为 时执行循环体,继续判断循环条件;为 时停止循环。

  • 循环体应该能使循环条件发生改变,否则就会死循环
  • 至少执行一次代码块

3. for

(1) 语法

1
2
3
for (初始语句; 循环条件; 末尾循环体){
循环体;
}
  • 先执行初始语句,初始语句会且仅会被执行一次
  • 判断循环条件,
    • 当循环条件为 时,执行循环体,执行末尾循环体,继续判断循环条件
    • 判断循环条件,当循环条件为 时,停止循环

(2) 初始语句

  • 一般用于为条件变量赋初值

  • 可省略

    1
    for ( ; i < n; i++)
  • 可包含多个表达式,表达式之间用逗号隔开

    1
    for (i = 0, j = 0;i < n; i++)
  • 可定义变量,在 for 中定义的变量将只在 for 中有效

    1
    for (int i = 0; i < n; i++)

(3) 循环条件

循环条件可省略,但不应死循环

例如:

1
2
3
for (i = 0; ; i++){
if(i > n) break;
}

(4) 末尾循环体

  • 一般用于改变条件变量。

  • 可省略,或移动至循环体末尾

    1
    2
    3
    4
    for (i = 0; i < n; ){
    循环体;
    i++;
    }
  • 可包含多个表达式,表达式之间用逗号间隔

    1
    for (i = 0; i < n; i++, j++)

4. foreach

(1) 语法

1
2
3
for (声明语句 : 表达式){
//循环体
}

每一轮循环中,数组的一个元素值复制给局部变量,由局部变量参与循环体中的运算。

例如:

1
2
3
for (int a : nums){
System.out.println(a);
}

(2) 声明语句

1
类型 变量名

声明新的局部变量,该变量的类型应该与数组元素相同。

(3) 表达式

表达式应为数组,或返回值为数组的方法。

(4) 注意事项

  • 每一轮循环中,数组元素值单向传递给局部变量,因此循环无法对数组做任何修改

    但如果数组中放置的是引用类型变量,则可以通过元素的值(即数据的地址),修改对应的数据

  • 每一轮循环中,单向传递的仅是元素值而没有下标值,因此无法查询到元素的具体下标

5. break

(1) 作用

用于跳出循环,即跳出整个循环,并继续执行循环之后的语句。

(2) 跳出本层循环

在循环体中恰当的位置放置 break 即可,程序运行到此时将会结束循环。

(3) 跳出外层循环

  • 在 break 之前的循环语句中,用标签标记循环(通常为外层循环),其格式为 循环标签:
  • 在 break 语句后紧跟循环标签,该语句将会停止标签所标识的循环

例如:

1
2
3
4
5
6
7
8
for (int i = 0; i < 10; i++){
循环标签:
for (int j = 0; j < 10; j++){
if (条件){
break 循环循环标签;
}
}
}

6. continue

(1) 作用

用于跳过本轮循环,(若是 for 循环,仍会执行末尾循环体),继续执行下一轮循环。

(2) 跳过本轮循环

在循环体中恰当的位置放置 continue 即可,程序运行到此时将会跳过本轮循环。

(3) 跳过外层本轮循环

  • 在 continue 之前的循环语句中,用标签标记循环(通常为外层循环),其格式为 循环标签:
  • 在 continue 语句后紧跟循环标签,该语句将会跳过标签所标识的循环的本轮循环

参考