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。 |
|