分支结构
-
到达某个状态时,可能会有多种情况,每种情况都需要提前准备好,所以多条路的路口就是一个分支。代码写得多,程序运行的少。
-
分类:
-
if语句
-
if else
-
if else if else
-
-
switch语句
-
if语句
if
1.格式:
if (布尔表达式) {
语句体;
}
2.执行流程
-
计算布尔表达式的值,要么为true、要么为false
-
如果计算结果为true,执行语句体
-
如果计算结果为false,就不执行语句体
If语句的注意事项
-
if后面跟着的小括号里面,必须是boolean的值
-
在小括号后面不要加分号,
-
语句体:可以是任意语句。如果语句体只有一句,那么大括号可以省略。但是建议所有情况都加上大括号,不要省略
if else
1.格式:
if (条件表达式) {
语句体1;
} else {
语句体2;
}
2.执行流程
-
计算条件表达式的值,要么是true、要么是false
-
如果条件表达式的值为true,执行语句体1
-
如果条件表达式的值为false,执行语句体2
if else if else
1.格式:
if (条件表达式1) {
语句体1;
} else if (条件表达式2) {
语句体2;
} else {
语句体3;
}
2.执行流程:
1、计算条件表达式1,如果为true,就执行语句体1;
2、如果条件表达式1为false,计算条件表达式2,如果为true,就执行语句体2
4、如果以上表达式都不满足条件就执行else
3.注意:
if else if else 三者互斥
switch
1.switch:表示英文中的开关。
2.格式:
switch (表达式) {
case 常量1:
语句体1;
break;
case 常量2:
语句体2;
break;
default:
语句体n+1;
break;
}
3.执行流程:
-
计算表达式的值,分别和各个常量匹配
-
如果和常量1匹配,那么久执行语句体1,break,switch语句就结束了
-
如果和常量1不匹配,那么就判断是否和常量2匹配,如果匹配就执行语句体2,break,switch语句就结束了
-
如果以上常量都不匹配就执行default
注意事项
-
表达式类型:
-
jdk1.5之前:byte、short、int 、char
-
jdk1.5:枚举类型
-
jdk7:String
-
-
case后面只能跟常量,不能跟变量
-
穿透问题:如果case语句后面不跟上break
If和switch区别
1、相同点:if语句和switch语句都可以表达分支结构
2、不同点:
1、if语句格式相对灵活,更加强大,switch语句相对弱小。所有的switch语句都可以被if语句替代。
2、if语句更多的是做一些连续性区间值的判断,而switch语句无法做到
3、if语句每次都需要获取表达式的值,而switch只获取一次表达式的值,所以switch的效率较高一些。
循环结构
-
对于某些需要重复执行的,相同或者相似的语句,使用某种格式来完成对代码的简化。
-
分类:
-
for
-
while
-
do...while语句
-
for语句
1.格式:
for (初始化语句 ; 循环的条件表达式 ; 初始化变量的自增 ) {
循环体语句;
}
2.执行流程:
-
执行初始化语句
-
计算循环的条件表达式
-
如果计算为false,就结束for循环
-
如果计算为true,就执行循环体语句
-
执行初始化变量的自增
-
回到第2步
调试
-
通过代码阅读或者加输出语句查找程序错误,当程序结构越来越复杂时,需要专门的技术来发现和定位错误,就是“程序调试”
-
调试步骤:
-
加断点
-
启动调试
-
逐语句执行,观察变量
-
-
调试操作
-
F7:step Into进入,逐步执行,会进入到自定义方法中,不会进入到类库的方法中
-
F8:step Over跳过,逐语句执行,不会进入到自定义方法中,不会进入到类库的方法中
-
Alt + Shift +F7:Force step into,会进入到自定义方法,会进入到类库的方法
-
Shift + F8:Step Out:跳出,指当我们在一个方法中调试时,如果觉得该方法在后面不会有任何问
-
while语句
1.格式:
初始化语句
while(条件表达式) {
循环体语句;
初始化变量的自增;
}
2.执行流程:
-
初始化语句
-
计算条件表达式,如果为false,循环直接结束
-
如果为true,执行循环体语句
-
执行初始化变量的自增
-
回到第二步
do while语句
1.格式:
初始化语句;
do {
循环体语句;
初始化变量的自增;
} while (循环条件表达式);
2.执行流程:
-
初始化语句
-
循环体语句
-
初始化变量的自增
-
计算循环条件表达式的值,如果为false,循环结束
-
如果为true,回到第二步
三种循环语句的区别
-
while和do while区别:
-
while先判断 后执行,do while 先执行,后判断
-
do while语句至少可以执行一次,另外两种有可能一次都执行不了
-
2、while/do while和for区别:
while/do while一般用于描述相对模糊的范围,不确定循环次数
for用于描述相对准确,知道循环次数的循环
跳转语句
-
break语句:
-
退出循环
-
-
continue语句:
-
结束本次循环,继续下次循环
-
循环嵌套
练习:绘制三角形
#
##
###
####
#####
for (int i = 0; i < 5; i++) {
for (int j = 0; j <= i; j++) {
System.out.print("#");
}
System.out.println();
}