java流程控制有三种程序结构:顺序结构,分支结构和循环结构。
1 顺序结构
顺序结构是三种结构中最容易的最简单的程序结构,它没有特定的语法结构,只需要按照代码的先后顺序执行,即自上而下,依次执行。
2 分支结构
分支结构分为if…else和switch-case两种分支语句。
if…else又包括if单分支语句, if-else双分支语句 ,if-else if -else多分支语句。
2.1 if单分支语句
if(条件表达式){
语句块;
}
注意:条件表达式结果为boolean类型,当表达式结果为true,则执行语句块;否则不执行。
当语句块只有一条执行语句时,一对{}可以省略,但一般建议保留。
2.2 if-else双分支语句
if(条件表达式){
语句块A;
}else{
语句块B;
}
注意:如果条件表达式为真,则执行语句块A,否则执行语句块B。
2.3 if-else if -else多分支语句
if(条件表达式A){
语句块A;
}else if(条件表达式B){
语句块B;
}...
else if(条件表达式N){
语句块N;
}else{
语句块N+1
}
注意:如果条件表达式A为真,则执行语句块A,否则去判断条件表达式B;如果条件表达式B为真,则执行语句块B,否则去判断下一个条件表达式,以此类推。如果这些条件表达式都不满足,则执行语句N+1。
其中,else是可选的,根据需要可以省略。
除此之外,if结构还可以嵌套使用 ,即:
if(条件1) {
if(条件2) {
代码块1
} else {
代码块2
}
} else {
代码块3
}
注意:在使用if嵌套的时候,为使结构清晰,if和else所包含的代码块应用大括号包起来。
2.4 switch语句
switch(表达式){
case 值1:
语句块1;
break;
.....
case 值X:
语句块X;
break;
default:
语句块default;
}
注意:当表达式的值为某一个case值,则进入case值相对应的语句块执行,当调用完执行语句以后,则仍然继续向下执行其他case结构中的执行语句,直到遇到break关键字或switch-case结构末尾结束为止。
如果表达式的值为所有case值都不相等,则执行default。
表达式在这里是一个值:但是必须是byte,short,int,char,枚举类型(JDK5.0新增),String(JDK7.0新增)其中的一种。
case的顺序没有强制要求,case 之后只能声明常量,不能声明范围。
3 循环结构
循环,即在某些条件满足的情况下,反复执行特定代码的功能
有while、do…while、for三种循环语句。
注:JDK1.5提供了foreach循环,方便的遍历集合、数组元素。
循环结构有四要素:1.初始化条件 2.循环条件( Boolean类型) 3.循环体 4.迭代条件
3.1 while循环
初始化部分
while(循环条件部分){
循环体部分;
迭代部分;
}
注意:此循环先进行初始化,然后 进行循环条件判断,如果循环条件为true,则执行循环体部分,再依次进行迭代部分,然后再进行循环条件判断。
再次 基础上,不声明迭代部分,则得到其死循环:while(true){
循环体部分;
}
3.2 do…while循环
初始化部分;
do{
循环体部分
迭代部分
}while(循环条件部分);
用法及注意: 先执行do对应的语句块,然后再判断循环条件,只要循环条件满足,则一直执行循环体,否则结束循环。
其不同于 while循环,先执行,再判断;且do-while循环至少执行一次循环体。
3.3 for循环
for( 初始化循环条件; 循环条件表达式 ; 迭代部分 ){
循环操作(循环体);
}
注意:其先执行初始化循环条件,然后使用初始表达式值进行条件判断(如果判断为true,则执行循环操作,否则结束循环),再进行迭代。
当进行循环遍历数组或者集合的时候,又有一种增强for循环,更为方便易用。
增强for内部是使用迭代器完成,也就是说,任何实现了Iterable接口的对象都可以被增强for循环遍历!这也是为什么增强for可以循环遍历集合的原因(Collection是Iterable的子接口)。
不过需要注意的是,Map并没有实现Iterable接口,需要使用entrySet()方法,获取maps集合中的每一个键值对,取得迭代器遍历出对应的值。或者使用keySet()方法,获取maps集合中的所有键,遍历键取得所对应的值,取得迭代器遍历出对应的值。
3.4 循环嵌套
将一个循环放在另一个循环体内,就形成了嵌套循环。其中,for ,while ,do…while均可以作为外层循环或内层循环。
实质上,嵌套循环就是把内层循环当成外层循环的循环体。当只有内层循环的循环条件为false时,才会完全跳出内层循环,才可结束外层的当次循环,开始下一次的循环。
设外层循环次数为m次,内层为n次,则内层循环体实际上需要执行m*n次。
4 流程跳转
java支持三种流程跳转语句,分别为break,continue和return。
4.1 break
循环(…) {
……
break;
……
}
用法及注意:break用于终止某个语句块的执行。其通常在循环中与条件语句一起使用。
4.2 continue
循环(...){
....
continue;
....
}
用法及注意:continue只能使用在循环结构中;continue语句用于跳过其所在循环语句块的一次执行,继续下一次循环;continue语句出现在多层嵌套的循环语句体中时,可以通过标签指明要跳过的是哪一层循环。
4.3 return
return并非专门用于结束循环的,它的功能是结束一个方法。当一个方法执行到一个return语句时,这个方法将被结束。
与break和continue不同,return直接结束整个方法,不管这个return处于多少层循环之内。