System.out.println('a');
System.out.println('b');
System.out.println('c');
System.out.println('d');
为什么要有分支结构?
a.当程序面临选择的时候,每种选择对应一种操作(结果)使用分支;
b.当程序面临选择的时候-->小括号()
选择下面对应着相应的操作(结果)-->大括号{}
1、if语句有三种格式(如果...就...否则...)
1.格式
①格式1
if(比较表达式){
语句体;
}
②执行流程:先计算比较表达式的值,看其返回的值是 true,还是false。如果是true,就执行语句体;如果是false,就不执行语句体。
③例如:
if(下雨){
打伞
}
不打伞
2.格式
①格式2
if(比较表达式){
语句体1;
}else{
语句体2;
}
②执行流程:首先计算比较表达式的值,看其返回的值是true,还是false,如果是true,就执行语句体1;如果是false,就执行语句体2。
③记忆:如果...就...
否则就...
3.格式
①格式3
if(比较表达式1){
语句体1;
}else if(表达式2){
语句体2;
}else if(表达式3){
语句体3;
}
.....
else{//可省略
语句体4;
}
②执行流程:首先计算比较表达式1的值,看其返回值是true,还是false。如果是true,执行语句体1;如果是false,接着计算比较表达式2,看其返回值是true,还是false。如果是true,执行语句体2;如果是false,接着计算比较表达式3,看其返回值是true,还是false。
③注意:最后一个else可以省略,但是不建议省略,因为它可以对范围外的错误值进行提示。
2、switch
1.语法格式:
switch(表达式){
case 值1:
语句体1;
break;
case 值2:
语句体2;
break;
...
default: //可以省略 但是不建议省略
语句体n+1;
break;
}
2.执行流程:先计算表达式的值,然后和case后面的值进行匹配,如果有就执行对应的语句体,否则继续向下匹配case ....,最后default默认。
3.注意事项:
①case后面只能是常量,不能是变量,而且多个case后面的值不能出现相同的;
②default可以省略,但是不建议省略,因为它的作用是对不正确的情况进行匹配描述。特殊情况case就可以把值固定住。
③switch(表达式)必须有值;byte short char int (只支持能等价成int的);String(字符串)-->jdk1.7加入的特性;枚举 (基本不用了)。
④break:最后一个可以省略,其他最好不要省略;如果省略了,会出现一种现象叫case穿透。最终我们不建议省略。
⑤switch语句的结束条件:第一种情况是遇到了break就结束了;第二种情况是执行到了switch的右大括号就结束了。
⑥default一定要在最后吗?从语法的角度考虑,default语句可以写在switch分支语句的任意地方,但是建议写在最后,若不写在最后需要添加break,书写在最后不用添加。
⑦注意:default可以写在case前面,但是代码还是先从case开始读,只有case答案都不对才执行default。
4.总结:switch语句和if语句的各自使用场景
①相同点:都是分支语句
②不同点:
a.语法不同
b.使用场景不同:if 表达式的值在某个区间范围之内;switch 变量的值是某个定值。如果是区间,就用if;如果值不多,数据类型有限制,就用switch。相对于if来讲,switch比if效率略高。
c.()表达式类型不同:if 语句表达式的值 返回是boolean true/false;switch 表达式值类型是 byte short char int 枚举String。
1、三种循环(java的循环语句分为三种:while、do..while、for)
1.while循环
①语法格式
A基本格式
while(判断条件语句){
循环体语句(重复做的事情);
}
B完整格式
初始化语句;
while(判断条件语句){
循环体语句;
控制条件语句;
}
③执行流程:
a.执行初始化语句;
b.执行(判断条件语句):看其返回的结果是true,还是false;如果是true,就执行{};如果是false,就结束循环。
如果b的结果是true,执行循环体语句;执行控制条件语句;回到第二步继续执行。
2.do-while循环
①语法格式
初始化语句;
do{
循环体语句;
控制条件语句;
}while(判断条件语句);
②执行流程:
a.执行初始化语句
b.执行循环体语句
c.执行控制条件语句;
d.执行判断条件语句():看其返回值是true,还是false;如果是true,就继续循环{};如果是false,就结束循环;
e.true回到第二步继续执行。
3.for循环
①语法结构
for(初始化表达式;条件表达式;循环后的操作表达式){
循环体;-->要循环执行的内容
}
②执行流程
a.执行初始化表达式;
b.执行判断:如果是true,就循环执行循环体;如果是false,就结束循环。
c.如果b是true,执行循环体语句;
d.执行循环后的操作表达式;
e.回到2继续执行。
③注意
a.循环体语句如果是一条,大括号可以省略;如果是多条,大括号不能省略,建议永远不要省略;
b.判断条件语句(条件表达式),无论简单还是复杂,结果都是boolean类型。
④For、while、do-while三种循环的异同点
a.while循环能解决的问题for循环都可以解决;for循环是用的最多、最频繁的循环,并不是说for循环的性能最优,而是它很简洁;do-while用的比较少。
b.for循环和while循环区别
如果你想在循环结束后继续使用控制条件的那个变量,用while循环,否则用for循环;for循环变量及早从内存中消失,可以节省内存空间。
2、循环嵌套 (for的多重循环嵌套)
一个语句体里面,嵌套其他的语句体-->嵌套;在一个循环中,又有其他的循环。while循环可以;for循环可以。可以理解为:外层循环是行;内层循环是列。
3、流程控制语句break、continue、return
1.break
使用场景:只能在switch和循环中结束整个循环
注意:
①当不写break的时候循环继续执行,直到条件语句返回false结束;
②写上break之后,当程序执行到break就退出整个循环,不再执行循环了;理解为跳出循环,炸掉循环。
③两种循环的死循环写法
a.for(;;){}
b.while(true){}
2.continue
使用场景:只能在循环中使用
注意:跳过本次循环,结束本次循环,接着开始下一次循环。
3.return返回
其实它的作用不是结束循环的而是结束方法的。
return关键字不是专门用来结束循环的,但是循环语句肯定是写在方法里的,所以它可以实现结束循环的效果。
4.break和return的区别
①break停止循环,循环下面的内容还会执行;return返回方法,结束方法下面的语句将不会再执行。
②break、continue、return区别:break是结束整个循环--->跳出整个循环;continue是终止本次循环继续下次循环;return结束方法。
5.break扩展知识点
①控制跳转语句标号——标记:标记某个循环,对这个循环进行控制。
②在多重循环体中最内层的break语句,跳出的是当前循环;可以借助“标记”来完成外层循环的结束;想要结束哪一层,可以用“标记”来告诉break。
联系客服