Java循环

本文介绍了Java中的循环语句,包括for、while和do-while循环的语法、执行流程及应用场景。for循环适用于已知循环次数,while循环适用于未知循环次数但有明确结束条件,do-while循环至少执行一次。同时讲解了break和continue语句在循环中的作用,以及循环的嵌套和注意事项。
摘要由CSDN通过智能技术生成

在开发时,我们会有许多带有规律性的重复指令需要计算机来完成,因此我们需要使用循环语句

循环语句由循环体和终止条件组成

前测试语句

先判断再执行

后测试语句

先执行或先定义,再判断

for循环

语法:

for(表达式1;表达式2;表达式3){
     循环体;
}

for循环语句属于前测试语句,基本步骤如上分3步

1.初始化(initialize):表达式1,定义循环的初始值,只在循环开始时执行初始化一次

2.测试(test):进入表达式2,判断循环条件是否成立,为 true 就进入循环体

3.递增(increment):执行完循环体返回到表达式2,再次检查循环条件是否成立,仍然为true则执行表达式3(迭代),自增

可以看出for循环适用于明确次数时使用,也可以用来遍历数组,在这里还介绍增强for

增强for概述(for each)

语法:

for(集合或者数组元素的类型 变量名 : 集合对象或者数组对象){
引用变量名的java语句;
}

1.适用性

  • 适用于集合和数组的遍历。

2.局限性:

  • 集合不能为null,因为底层是迭代器。
  • 隐藏了迭代器,所以在遍历集合时不能对集合进行修改(增删)。
  • 不能获取下标

while循环

语法:

while(条件表达式){
    循环语句块;
}

while循环语句也属于前测试语句

对比for循环

while循环表达式中放入布尔值,更能简便的达到不限次数、无限循环

对比for循环,针对的问题不同

do while 循环

语法:

do{
    循环语句块;
}while(条件表达式);

do while语句是一种后测试循环语句,即在循环体执行后才会测试出口条件,说通俗点,对比while,do  while 至少执行一次,条件在循环体执行结束后判断

三种循环的比对

  1. for循环适用于明确知道循环的次数
  2. while循环适用于不知道循环的具体次数,只知道达到某个条件的时候循环结束
  3. do-while循环适用于不知道循环的具体次数但至少要执行一次,只知道达到某个条件的时候循环结束

打断循环

打断循环有俩个关键字

break、continue

break

在循环结构中,用break语句跳出本层循环体,从而提前结束本层循环

for (int i = 0; i < 10; i++) {
    if (i == 3) {
        break;
    }
    System.out.println(i); // 0 1 2
}

当i自增到3,进入if条件时,执行break语句,直接跳出本次循环,所以我们看到输出从0开始,到2就停止了

continue

continue是结束本次循环(即跳过本次循环中余下尚未执行的语句),接着再一次进行循环条件的判定。

for (int i = 0; i < 10; i++) {
    if (i == 3) {
        continue;
    }
    System.out.println(i); // 0 1 2 4 5 6 7 8 9
}

同样,从输出结果可以看出,当i自增到3时,进入if语句,执行continue,但没有跳出循环,只是结束本次循环,后面不满足if语句,所以依然能执行

循环的嵌套

语法:

外层循环{
    内层循环{}
}

我们用代码来看看嵌套循环的执行顺序

 for (int i = 0; i < 3; i++) {
            System.out.println("i" + i);
            for (int j = 0; j < 10; j++) {
                if (j == 3) {
                    break;
                }
                System.out.println("j:" + j);
            }
            System.out.println("内层跳出");
        }
        System.out.println("外层跳出");
/*i:0		j:0		j:1		j:2		内层跳出	i:1		j:0		j:1		j:2		内层跳出		i:2
 j:0		j:1		j:2		内层跳出		外层跳出

//执行顺序:
*/
/*外层表达式1.初始化int i = 0;		满足i<3		到外层表达式4,代码往下走		     输出i(0)	        int j = 0;
------------------------------------------------------------------------------------------------------------
满足j < 10		            到内层表达式4不满足j == 3代码往下走	           输出j(0)	            j ++(0+1)
------------------------------------------------------------------------------------------------------------
满足j < 10            不满足j == 3		        输出j(1)		     满足j < 10	                  不满足j == 3
------------------------------------------------------------------------------------------------------------
输出j(2)        j++(2+1)		  满足j < 10            满足j == 3,break打断循环代码往下走		     输出内层跳出
------------------------------------------------------------------------------------------------------------
i++(0+1)	     满足i < 3		    输出i(1)       int j = 0;		     满足j < 10		       不满足j == 3 
------------------------------------------------------------------------------------------------------------
输出j(0)		        j++(0+1)		       满足j < 10		          不满足j == 3		            输出j(1)
------------------------------------------------------------------------------------------------------------
j++(1+1)	      满足j < 10       不满足j == 3		  输出j(2)		    j++(2+1)	          满足j < 10
------------------------------------------------------------------------------------------------------------
满足j == 3          输出内层跳出         i++(1+1)          满足i < 3			   输出i(2)            int j = 0
------------------------------------------------------------------------------------------------------------
满足j < 10          不满足j == 3		   输出j(0)       j++(0+1)		    满足j < 10            不满足j == 3
------------------------------------------------------------------------------------------------------------
输出j(1)		     满足j < 10		       不满足j == 3                输出j(2)		               j++(2+1)
------------------------------------------------------------------------------------------------------------
满足j < 10           满足j == 3,break打断循环,回到i++(2+1)      不满足i < 3		输出内层跳出		输出外层跳出
------------------------------------------------------------------------------------------------------------
*/

注意点:

  1. 几重循环看的是循环嵌套的层级,而不是循环的个数;
  2. 在语法上循环嵌套的层次是可以无限的,但是在现实开发当中,最多达到三重循环;嵌套层次过多会导致程序流程控制力度下降,算法可读性降低;
  3. 嵌套循环的关键,在于搞清楚循环执行的顺序。外层循环执行1次,内层循环执行1圈;
    内层循环可以访问外层循环的循环控制变量;
    外层循环不能访问内层循环的循环控制变量;
  4. 循环控制变量命名,最外层的用i,第二层用j,第三层用k,依次类推,这是“约定俗成”的规范; 同层循环可以使用同名的循环控制变量;
  5. break 和 continue,只能对本层循环起作用

(本文为接触Java不久的菜鸟所写,如有误区,还望各位大佬多多指教,菜鸟虚心受教)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值