1、死循环
概述:
适用所有的循环语句,循环语句的循环条件恒成立,循环语句停止不下来的语句,就是死循环。
好处: 解决一些特殊的场景应用,比如:无限登录服务器的运行;
弊端: 对硬件要求较高,最终肯定会宕机 。
for循环的死循环:
for(int a = 0;a++; a < 0){
循环体;
}
while循环的死循环
while(true){
循环体;
}
2、跳转语句
概述:
人为的对循环执行进行控制时使用的语句。
分类:
- break:打断 在选择语句中结束整个选择语句的 在循环语句中结束整个循环,后续循环不执行。
- continue: 在循环语句中结束当前循环次数的执行,继续执行后续循环
代码示例:
public class JumpLoopDemo {
public static void main(String[] args) {
for (int i = 1; i < 6; i++) {
if (i == 3) {
break;// 结束整个循环,1、2后不执行
continue; // 结束当前次数的循环,执行 1 2 4 5
}
System.out.println(i);
}
}
}
3、嵌套循环
概述:
一个循环内的循环体是另一个循环体的循环语句就是嵌套循环。所以在学习和使用嵌套循环的时候,就使用单个循环语句的知识点去使用它。
比如:
for(初始化语句外;循环条件外;初始化变量改变外){
// 外循环体
for(初始化语句内;循环条件内;初始化变量改变内){
循环体内
}
}
执行流程:
1、执行初始化语句外 。
2、执行循环条件外 。
不成立:结束外循环【注意:内循环根本没有权利执行】 ;
成立:
3、执行内循环【外循环的循环体】
3.1、执行初始化语句内
3.2、执循环条件内 不成立:结束内循环执行第4步 。
成立:
3.3、执行循环体内。
3.4、执行初始化变量改变内。
3.5、回到3.2 形成 3.2 3.3 3.4 3.5 闭环操作一直到循环条件内不成立,结束内循环,去执行步骤4 。
4、执行初始化变量改变外 。
5、回归第2步 形成 2345闭环操作 一直到循环条件外不成立结束外循环 。
代码示例:
public class LoopAndLoopDemo {
public static void main(String[] args) {
for (int i = 1; i <= 5; i++) {
for (int j = 1; j <= 4; j++) {
System.out.println("外循环" + i + "内循环" + j);
}
}
}
// 外循环执行一次 内循环执行全部
}
案例示例1:
使用嵌套循环,打印四行五列星星矩形【每次只能打印一个*】
*****
*****
*****
*****
提示:打印不换行,使用 print 方法,不要加 ln。
分析:
把*****
看成一个整体 字符’a’
重复的打印4次’a’【4行a】
真正要打印的每行的内容是*****
不是a
因为:
a的真正的内容是5个* 需要打印5次*【重复的打印】 每行打印完需 要换行
所以:
使用循环打印5个* 然后换行 替换内容a
public class LoopAndLoopText01 {
public static void main(String[] args) {
// 先要打印4行字符a
for (int i = 1; i <= 4; i++) {
// System.out.println('a');
// 使用循环打印5个* 然后换行 替换内容a
for (int j = 1; j <= 5; j++) {
// 打印同一行的*
System.out.print("*");// 打印完内容不换行
}
// 内循环完毕同一行的5*打印完毕需要换行
System.out.println();
}
}
}
案例示例2:
打印 99 乘法表
11=1
12=2 22= 4
13=3 23=6 33=9
…
19=9 29=18 39=27 … 89=72 9*9=81
分析: 把 1*1=1 式子 看成是一个 * 整体结构就变得和练习2的结构一样 使用练习2的 思路完成结 构的打印。9行9列的打印。
式子内容: 每行内容的个数 * 每行行数 = 每行内容的个数 * 每行行数成绩的值 字符串 内循环的初始化变量 + * + 外循环的初始化变量 + = + 内循环的初始化变量 * 外循环的初始化变量 。
public class LoopAndLoopText03 {
public static void main(String[] args) {
// 先要打印9行字符a
for (int i = 1; i <= 9; i++) {
// 打印行的内容
// System.out.println("a");
for (int j = 1; j <= i; j++) {
// * 的内容是 1*1= 1 1*2 = 2 j + "*" + i + "=" +j*i
System.out.print(j + "*" + i + "=" + j*i + "\t");
//不换行打印 * 完成每行内容的打印
}
// 循环完事 一行内容打印完毕 需要换行
System.out.println();
}
}
}