Java中的循环结构
一、循环的概念
- 循环的特点:有规律,并且重复
- 循环的概念:循环是通过某个条件的控制,不断的重复某个行为的代码
- 循环的组成:
- 循环变量的初始化
- 循环变量的变化
- 循环条件
- 循环体
二、while循环
-
语法:
循环变量初始化 while(循环条件){ 循环体 循环变量的变化 }
-
执行流程:
- 对循环变量进行初始化
- 判断while后的布尔表达式的结果是否为true
- 如果结果为true,则执行大括号中的代码。代码执行结束之后,本次循环结束,再次判断while后的布尔表达式是否为true
- 如果结果为false,则不执行大括号中的代码,直接越过while循环,继续执行后面的代码
-
执行特点:先判断条件,再执行代码。执行的次数:0~n次。
-
注意:
- 循环过程中,如果循环变量没有给予任何改变,可能会出现死循环。
- 循环条件如果直接给的 true,则循环一直进行,也是死循环的现象。
public class TestWhile { public static void main(String[] args) { //计算1到100的累加和 int sum = 0; int i = 1; while(i <= 100){ sum += i; i++; } System.out.println(sum); } }
三、do…while循环
-
语法:
循环变量初始化 do{ 循环体 循环变量的变化 }while(循环条件);
-
执行流程:
- 对循环变量进行初始化
- 执行do之后的代码
- 判断while后的布尔表达式的结果是否为true
- 如果结果为true,则再次执行do之后的代码,本次循环结束。再次判断while后的布尔表达式的结果是否为true
- 如果结果为false,则不执行大括号中的代码,直接越过while循环,继续执行后面的代码
-
执行特点:先执行一次代码,再进行判断。执行的次数:1~n次
-
do…while与while的区别:
- do…while循环,无论布尔表达式是否为true,都会至少执行一次do之后的代码
- while循环,如果表达式结果一开始就是false,则代码不会得到执行
public class TestDoWhile { public static void main(String[] args) { // 计算1到100的累加和 int sum = 0; int i = 1; do { sum += i; i++; } while (i <= 100); System.out.println(sum); } }
四、for循环
-
语法:
for(循环变量初始化;循环条件;循环变量的改变){ 循环体 }
-
执行流程:
- 执行循环变量初始化语句,对循环变量进行初始化
- 对循环条件进行判断,如果结果为true,则进入循环体语句代码
- 执行循环变量变化语句
- 对循环条件进行判断,如果结果为true,则进入循环体语句代码
- 执行循环变量变化语句
- 对循环条件进行判断,如果结果为false,结束循环
-
执行特点:先判断条件,再执行代码。执行的次数:0~n次。
-
关于for循环的循环变量:
- for循环的循环变量为仅在循环内有效的局部变量
- 循环变量的初始化可以声明在for循环的外面,但是不建议这样做,因为会加大循环变量的作用域,不利于该变量的回收
- 循环变量的变化可以写在循环内部,但不建议这样做
public class TestFor { public static void main(String[] args) { //计算1到100的累加和 int sum = 0; for (int i = 0; i <= 100; i++) { sum += i; } System.out.println(sum); } }
五、流程控制
-
关键字:break
作用:结束循环,无论之后还有多少次循环,都不再进行,直接退出
public class TestBreak { public static void main(String[] args) { // 计算1到100的累加和 int sum = 0; int i = 1; while (true) { if (i == 101)break; sum += i; i++; } System.out.println(sum); } }
-
关键字:continue
作用:结束本次循环,继续后续循环
public class TestContinue { public static void main(String[] args) { //计算1-100中所有偶数的累加和 int sum = 0; for (int i = 0; i <= 100; i++) { if(i % 2 != 0) continue; sum += i; } System.out.println(sum); } }
-
break可以用在switch结构和循环结构中,但continue只能用在循环中
六、循环的嵌套
- 概念:在一个循环结构中,又定义了一个完整的循环结构。
- 执行流程:外层循环执行一次,内层循环执行一整圈
- 循环的执行次数:外层循环次数*内层循环次数
- 在嵌套循环中的break和continue
- break:结束当前所在层的循环,如果有外层循环则继续外层循环
- continue:结束当前层的本次循环,进入本层的下一次循环
- 嵌套循环可以使用label标签进行流程的控制
public class TestNestedLoop {
public static void main(String[] args) {
//打印九九乘法表
outter:for (int i = 1; i < 10; i++) {
inner:for (int j = 1; j <= i; j++) {
System.out.print(j+"X"+i+"="+i*j+"\t");
}
System.out.println();
}
}
}