【Java】循环结构
While循环
语法格式
初始化语句; While(条件表达式){ 循环体; 迭代语句; }
While循环在执行循环体之前,先对循环条件进行判断,如果循环条件是true,则执行循环体。如果循环条件一开始就是错的,那么永远都不会执行循环体。
有些时候,迭代条件会和循环条件或者循环体合二为一,应该多加注意。如果while的花括号里只有一句话的情况下,可以把花括号省略掉。While循环还有一个超级陷阱,就是在循环条件后面紧跟了一个分号,简直要命,这样操作以后,分号后面的代码就和循环没有任何关系了。
do while
语法结构
初始化语句; do{ 循环体; 迭代条件; }while(循环条件);
先说说他和while循环的关系,简直就是while循环的大表哥,while循环是先判断循环条件,如果条件为真再执行循环体,而do while则是先执行循环体,再判断循环条件。所以来说,不管循环条件是否为true,do while循环都会执行一次循环体。
特别注意一下,do while循环的循环条件后面必须有一个分号。
for循环
最后一个出场的是for循环,相对另外两个循环而言,for循环更加容易理解。
语法结构
for(初始化语句;循环条件;迭代语句){ 循环体; }
for循环执行的时候,先执行一遍初始化语句,而且初始化语句只会执行一次,每次循环体之前,都会执行一次循环条件,判断循环条件的值是否为true;如果是true,则继续执行循环体,循环体之行结束以后,执行循环迭代语句。最后循环条件返回false的时候,不再执行循环体,结束循环。
for循环里面只有两个分号是必须的,其余部分均可省略掉,省略循环条件时,循环条件会默认为true,这是就会变成一个死循环。
建议for循环的初始化语句,不要定义在for循环外面,会影响这个变量的作用域,本来这个变量只能在这个循环里面生效的,作用域扩大了以后,如果还有另外一个循环要使用这个变量时,就可能会引起错误。
强烈建议,不要在循环体里面修改循环变量的值,一不小心就可能造成千古恨,导致程序出错。
普及一下,for循环和while、do while循环不一样,for循环的循环体没有和迭代语句在一起,所以即使循环体不能执行时,迭代语句也可以执行的,例如使用continue结束了本次循环,for循环会执行迭代语句,而while和do while语句则不能。
嵌套循环
把一个循环放到另一个循环里面,这就是嵌套循环,这三种循环可以互相嵌套使用,没有什么影响。当出现嵌套循环的时候,里面的循环就是外面循环的循环体,假设外层的循环的层数是m,内层的循环的层数为n,那么循环体的执行次数就是m*n。
嵌套循环可以有很多层,但是建议一般不要超过两层,不然会影响程序的效率。
控制循环结构
Java提供了continue和break来控制循环结构,除了这些东西,我们还可以使用return来结束循环。
1、当我们需要在满足某些条件时,强制结束循环,可以使用break,结束整个循环,跳出循环体,然后程序会继续执行循环下面的代码。
运行结果如下:
break不仅可以结束它所在的那层循环,它还可以结束外层的循环,但是需要给外层循环加上标签,标签必须在break所在循环的外层循环之前定义,具体操作如下所示:
运行结果如下:
2、使用continue结束本次循环,只是忽略掉这次循环中continue后面的语句,继续下一次循环,它不会结束整个循环。
运行结果如下:
和break一样,continue也可以结合标签使用。
运行结果如下:
问题:为什么不会输出“continue后面的外循环语句”这句话?
3、使用return,特别注意一点,return并不是结束循环那么简单,它还会结束整个方法,不管return在多少层循环之内。
运行结果如下: