标签:
Java提供了两种基本的流程控制结构:分支结构和循环结构。其中分支结构用于是根据条件来选择执行某段代码,循环结构则是根据循环条件重复执行某段代码。分支语句有if和switch两种,循环语句有for、while和do while三种。除此之外,jdk1.5还提供了foreach循环,同时java还提供了break和continue来控制程序的循环结构。
1、顺序结构
这是程序最常见的结构,如果没有流程控制,java就会从上到下一次执行每条语句,这个没什么可说的。
2、分支结构
2.1 if条件语句
If有三种形式:
第一种:
if(logic expression) { statement... }
第二种:
if(logic expression) { statement... } else { statement.... }
第三种:
if(logic expression) { statement... } else if(logic expression) { statement... } ....\\可以写零个和多个else if else { statement... }
注意:if括号里面的内容只能是一个逻辑表达式,返回值只能是true或false。第三种形式的多行代码称为代码块,通常被当成一个整体执行,除非遇到break、return、contin等关键字,或者遇到异常。
2.2 switch分支语句
格式如下:
switch(expression) { case condition1: { statement(s) break; } case condition2: { statement(s) break; } ...... case conditionN: { statement(s) break; } default: { statement(s) } }
注意:switch语句后的expression表达式的数据类型只能是byte、short、char、int四个整数类型和枚举类型。
3、循环结构
3.1 while循环语句
格式如下:
while(expression) { statement; }
注意:while(expression);是个陷阱,后面千万不能加分号,否则会造成死循环;还有一定要保证while有跳出循环的时候,否则也会成为死循环。
3.2 do while循环语句
格式如下:
do { statement; }while (expression);
注意:与while不同的是,do while后必须有一个分号,这个分号表明循环结束;while先判断条件,如果为真则执行循环体,do while则是先执行循环体,然后才判断条件,为真则继续,否则结束。
3.3 for 循环
格式如下:
for([init_statment];[expression];[iteration_statement]) { statement; }
注意:init_statment初始化语句只执行一次,然后判断expression是否为真(expression只能是逻辑表达式),如果为真就执行循环体,循环体结束后执行iteration_statement,然后再判断expreeion,如果为真则继续,否则结束。
4、控制循环结构
4.1 使用break结束循环
break是用于完全结束一个循环,当有些时候我们需要在某种条件出现时强行终止循环,而不是等到循环条件为false才退出循环。
注意:一般情况break只是结束当前循环,但是如果break后面紧跟一个标签,可以结束标签所标识的外层循环(标签只有放在循环语句之前才有作用)。例如:
outer: for(int i=0; i<5; i++) { for(int j=0; j<3; j++) { if(j == 1) break outer; } }
4.3 使用return结束方法
return并不是专门用于结束循环的,而是结束一个方法。如下:
public class Test { public static void main(String[] args) { for( int i=0; i<3; i++) { if(i == 1) return; } } }
当i==1是运行到return时,直接就结束当前方法,这里是结束main方法(main方法结束也意味着程序结束)。
这是我对流程控制结构的基本使用方法和格式做的简单的总结,其实还有比较特殊的情况,比如for(;;)和while(true)是无限循环。循环还可以嵌套使用,大循环里套了小循。for循环对比while,for循环括号内变量使用完了就在内存中释放了,也就是说循环结束后就无法使用,while则相反,循环结束后变量还存在,能继续使用。
标签:
原文地址:http://www.cnblogs.com/hutanlong/p/4351365.html