Java循环结构while 、do while、for循环语句学习小结
来源:互联网 发布:mac os x 卸载软件 编辑:程序博客网 时间:2024/05/18 06:40
循环语句可能包含四个部分
(并不是每个循环都非常清晰的分出了这四个部分)
1、初始化语句(init_statement)一条或多条语句,再循环之前执行,用于完成一些初始化工作。
2、循环条件(test_expression)一个用于决定是否执行循环体的Boolean表达式。
3、循环体(boy_statement)循环的主体,若只有一行语句可省略花括号{}。(但为了保证代码的可读性最好保留花括号)
4、迭代语句(iteration_statement)一次循环体执行结束之后,循环条件求值之前执行。通常用于控制循环条件中的变量。
一、while循环语句
while语法格式
[init_statement]//初始化语句while(test_expression){//循环条件statement;[iteration_statement]//迭代语句}
while循环的的注意事项:
1、如果while循环的循环体部分和迭代语句合并在一起可省略花括号,如果省略了循环体的花括号,那么while的循环条件紧控指到紧跟该循环条件的第一个分号处。
public class WhileTest { public static void main(String[] args){ int count = 0; int s = 0; while (count <10) s=count++ + 3;//先计算count +3后再加1 循环体与迭代语句合并 System.out.println(s);//结果只输出了一次12,即未参与while循环 在循环结束后执行输出 }}
2、一定要保证循环条件存在false时候,否则死循环。
int count = 0;while (count<10){System.out.println("死循环"+count);count--;//count的值越来越小}
3、空语句
int count = 0;while (count < 10);//习惯性的加分号,一个分号也是一个语句即空语句所以while循环在这里陷入死循环//分号后面的代码块与while循环无关系System.out.println("-----" + count);count++;}
do while 循环
do while 循环与while循环不同的是do while循环先执行循环体 在判断执行条件,即do while循环的循环体至少执行一次。
public class DoWhileTest{public static void main(String[] args){//定义一个量int count = 1;//执行do while循环do{System.out.println(count);count++;}while(count <10);System.out.println("循环结束");}
for循环
for循环比较简洁,大部分情况下可以代替while、do while循环,for循环的执行条件总比循环体多执行一次,即当执行条件语句返回false时不再执行循环体。
值得注意的是for循环的循环体并未与迭代语句放在一起,与while、dowhile不同,即使在执行循环体是遇到了continue语句结束了本次循环,迭代语句也会执行。
for循环允许同时指定多个初始化语句,循环条件也可以是一个包含逻辑运算符的表达式。
建议不要再循环体内修改循环变量,因为容易出错,如下
public class Fortest{public static void main(String[] args){ for(int count = 0;count <10;count++) { System.out.print(count); //循环体内修改循环变量count count*0.1; } System.out.print("循环结束"); }}
如果真的需要访问、修改循环变量的值,建议重新的定义一个临时变量将循环变量的值赋值给临时变量,然后对临时变量的值修改。
for循环的圆括号中的两个分号是必需的,初始化语句、循环条件、迭代语句都可以省略,则此时循环条件默认为true即死循环
public class DataForTest{ public static void main(String[] args){//省略掉三个部分for( ;;){ //一直输出字符串aaaaaa System.out.println("aaaaaa"); } } }
for循环的初始化语句(例如int i = 0;)也可以定义在循环体外,不过这将扩大初始化语句的作用域,后果是若该方法还有其他的循环则不能在使用该语句中的循环变量i。
for循环内定义的变量其做用于仅为该循环内,若想是在循环外再使用可以这样做
int tmp = 0;for(int i = 0; i< 10; i++)}{System.out.println(i);//使用tmp保存i的值tmp = i;}System.out.println("循环结束");
嵌套循环
嵌套循环就是将内部循环当做外部循环的循环体。只有内部循环条件为false时,才能跳出内层循环结束这一次的外循环进入下一次的外层循环。
控制循环结构
Java中提供了continue和break来控制循环结构,return的方法可以结束整个方法。
1、break
break是直接完全结束一个循环,跳出循环体。若是嵌套循环则可以使用标签来标识是结束整个外循环。如下
public class BreakTest{ public static void main(String[] args){outer:for (int i = 0;i < 5;i++){for (int j = 0;j <3;i++){ System.out.println("i的值为"+i+"j的值为"+j); if(j==1){ //跳出outer标签标识的循环 break outer; } } } }}
运行结果:
i的值为0 j的值为0i的值为0 j的值为1
2、continue
continue只是忽略本次循环剩下的语句,接着开始下一次的循环;break是完全终止此循环
public class Continue{ public static void main(String[] args){ for(int i = 0;i<3;i++){ System.out.println("i的值为"+i); if(i==1){ //忽略本次循环省略的语句 continue; } System.out.println("continue后的输出语句"); }}
运行结果:
i的值为 0continue后的输出语句i的值为 1i的值为 2continue后的输出语句
continue也可以使用标签,当使用continue用标签标注嵌套循环的外层循环时,结束的是本次外层循环。开始下一次外层循环。
public class CountinueTest2{ public static void main(String[] args){ //外层循环 outer: for (int i = 0;i < 5;i++){ for(int j = 0;j < 3;j++){ System.out.println("i的值为"+i+"j的值为"+j); //忽略continue后的语句 if(j==1){ continue outer; } System.out.println("continue后的语句"); } } } }
输出结果:
i的值为0j的值为0continue后的语句i的值为0j的值为1i的值为1j的值为0continue后的语句i的值为1j的值为1i的值为2j的值为0continue后的语句i的值为2j的值为1i的值为3j的值为0continue后的语句i的值为3j的值为1i的值为4j的值为0continue后的语句i的值为4j的值为1
- Java循环结构while 、do while、for循环语句学习小结
- 循环语句小结 for while do-while
- 循环结构语句---for,while,do-while
- Java 循环结构for、do...while、while
- switch 语句还有 循环结构 while 、do-while、 for
- 循环结构(do...while语句)
- [TwistedFate]循环语句:while循环,do...while循环,for循环
- 循环语句(for循环,while循环,do-while循环)
- 语句-循环结构while和do while
- JavaScript while, do while for 循环语句
- 循环语句(for;while;do -while)
- 循环语句(while、do...while、for)
- 循环结构(while、do…while、for)
- for、while、do while循环结构
- Java 循环语句之 while ,do ...while,for
- java循环结构--for,while以及do....while
- Java 循环结构 - for, while 及 do...while
- Java 循环结构 - for, while 及 do...while
- Counting Black(树状数组)
- js模拟实现重载以及默认参数
- C语言实验——打印图形
- JVM虚拟机模型和运行时数据区
- shiro 框架的学习总结
- Java循环结构while 、do while、for循环语句学习小结
- 单项链表逆转
- Go 的控制语句
- LeetCode 0058
- 【基于角色的访问控制RBAC】权限与资源树
- xshell 连接VMware虚拟机失败
- BZOJ1617: [Usaco2008 Mar]River Crossing渡河问题
- Python-1-另一个代码世界的九九乘法口诀表
- php命名规则