本文链接:https://blog.csdn.net/qq_41338341/article/details/81107840
流程控制思维导图
如果没有流程控制(即没有分支结构和循环结构),Java方法里面的语句是一个顺序执行流,从上到下依次执行每条语句。
if语句使用布尔表达式或者布尔值作为分支条件来进行分支控制。有如下三种形式:
(1)第一种形式
if(布尔表达式或者布尔值){
语句...
}
(2)第二种形式
if(布尔表达式或者布尔值){
语句...
}else{
语句...
}
(3)第三种形式
if(布尔表达式或者布尔值){
语句...
}
else if(布尔表达式或者布尔值){
语句...
}
...//可以有零个或者多个else if语句
else//最后的else语句也可以省略
{
语句...
}
注意:
//下面是一个容易出现的逻辑错误
public class demo{
public static void main(String[] args){
int age = 45;
if(age > 20){
System.out.println("青年人");
}else if(age > 40){
System.out.println("中年人");
}else if(age > 60){
System.out.println("老年人");
}
//程序永远不会输出中年人和老年人
}
}
如例子中的age>60和age>20两个条件,明显age>60的范围更小,所以应该优先处理age>60的情况。
下面给出一个省略花括号导致编译出错的例子:
int c = 5;
if(c > 4)
c--;
//下面是一行普通代码,不属于执行体
System.out.println("c大于4");
//此处的else将没有if语句,因此编译出错
esle
System.out.println("c不大于4");
(1)switch的语法格式如下:
switch (expression){
//可以省略case后代码块的花括号
case condition1:
{
statement(s)
break;
}
case condition2:
{
statement(s)
break;
}
...
case conditionN:
{
statement(s)
break;
}
default:
{
statement(s)
}
}
注意:
一般循环语句可能包含4个部分:初始化语句(init_statement)、循环条件(test_expression)、循环体(body_statement)、迭代语句(iteration_statement)[循环体如果只有一行语句,可以省略花括号]
三种循环结构之间可以相互嵌套。
语法格式如下:
[init_statement]
while(test_expression){
statement;
[iteration_statement]
}
注意:如果省略了循环体的花括号,那么while循环条件只控制到紧跟该循环条件语句的第一个分号处。
语法格式如下:
[init_statement]
do{
//与while不同的是,while循环的循环体可能得不到执行,但do while的循环体至少执行一次
statement;
[iteration_statement]
}while(test_expression);//这里一定要有分号,表明循环结束
基本语法格式如下:
for( [init_statement] ; [test_expression] ; [iteration_statement] ){
statement;
}
//如果循环体只有一行语句,那么循环体的花括号可以省略
程序执行for循环时,最先执行初始化语句init_statement(初始化语句只在循环开始前执行一次),然后判断循环条件test_expression,如果得到true,则执行循环体(每次执行循环体之前都会先进行循环条件判断),循环体执行结束后执行迭代语句。
注意:
在Java数组里面再详细讲述其用法。
break:用于完全结束break语句所在循环,跳出当前循环体。
break还可以用于直接结束其外层循环,此时需要借助标签。Java的标签就是一个紧跟着英文冒号(:)的标识符。与其他语言不同的是,Java中的标签只有放在循环语句之前才有作用。例如下面代码:
public class Demo1 {
public static void main(String[] args) {
//外层循环,outer作为标识符
outer:
for(int i = 0;i < 5;i++) {
//内层循环
for(int j = 0;j < 3;j++) {
System.out.println("i="+i+" j="+j);
if(j == 1) {
//跳出outer标签所标识的循环
break outer;
}
}
}
}
}
第11行的break outer;语句将会导致结束outer标签指定的循环,而不是break所在的循环。注意:break后的标签必须是一个有效的标签,即应该把标签放在break语句所在循环的外层循环之前定义。当然,也可以把标签放在break语句所在循环之前定义,只是这样就失去了标签的意义,因为break默认就是结束其所在的循环。
continue:用于忽略本次循环剩下的语句,接着开始下一次的循环,并不会终止循环。
与break类似,continue后也可以紧跟一个标签,用于直接跳过标签所标识循环的当次循环的剩下语句,重新开始下一次循环。这个标签通常应该放在continue所在循环的外层循环之前定义。
return:直接结束整个方法,从而结束循环。
————————————————
版权声明:本文为CSDN博主「小谷围最靓的仔」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_41338341/article/details/81107840