Java 控制语句
控制语句的类型:
选择语句 : if 语句 switch 语句
循环语句 :for 循环 while 循环 do...while 循环
转向语句 : break continue return
选择语句/分支语句
if语句的写法格式是
if (布尔表达式) {
}
if(布尔表达式){
}else{
}
if(布尔表达式1){ // 分支1
java语句;
}else if(布尔表达式2){ // 分支2
java语句;
}else if(布尔表达式3){
java语句;
}else if(布尔表达式4){
java语句;
}....
以上if语句的执行原理?
先判断“布尔表达式1”,如果“布尔表达式1”为true,则执行分支1,然后if语句结束了。
当“布尔表达式1”结果是false,那么会继续判断布尔表达式2的结果,如果布尔表达式2的结果是true,则执行分支2,然后整个if就结束了。
从上往下依次判断,主要看第一个true发生在哪个分支上。第一个true对应的分支执行,只要一个分支执行,整个if结束。
第四种写法:
if(布尔表达式1){ // 分支1
java语句;
}else if(布尔表达式2){ // 分支2
java语句;
}else if(布尔表达式3){
java语句;
}else if(布尔表达式4){
java语句;
}else{
java语句; // 以上条件没有一个成立的。这个else就执行了。
}
注意:
1、对于if语句来说,在任何情况下只能有1个分支执行,不可能存在2个或者更多个分支执行。if语句中只要有1个分支执行了,整个if语句就结束了。(对于1个完整的if语句来说的。)
2、以上4种语法机制中,凡是带有else分支的,一定可以保证会有一个分支执行。以上4种当中,第一种和第三种没有else分支,
这样的语句可能会导致最后一个分支都不执行。第二种和第四种肯定会有1个分支执行。
3、当分支当中“java语句;”只有1条,那么大括号{}可以省略,但为了可读性,最好不要省略。(有的程序员在编写代码的时候,可能会故意将大括号{}省略,你能看懂就行。)
4、控制语句和控制语句之间是可以嵌套的,但是嵌套的时候大家最好 一个语句一个语句进行分析,不要冗杂在一起分析。
switch 语句
语句格式
switch(值){
case 值1:
java语句;
java语句;...
break;
case 值2:
java语句;
java语句;...
break;
case 值3:
java语句;
java语句;...
break;
default:
java语句;
}
1、break;语句不是必须的。default分支也不是必须的
2、switch语句支持的值有哪些? 支持int类型以及String类型。
3、switch语句的执行原理
拿“值”与“值1”进行比较,如果相同,则执行该分支中的java语句,然后遇到"break;"语句,switch语句就结束了。
如果“值”与“值1”不相等,会继续拿“值”与“值2”进行比较,如果相同,则执行该分支中的java语句,然后遇到break;语句,switch结束。
注意:如果分支执行了,但是分支最后没有“break;”,此时会发生case穿透现象。case 可以合并
所有的case都没有匹配成功,那么最后default分支会执行。
1 import java.util.*; 2 3 public class ControlStatements { 4 public static void main(String[] args) { 5 Scanner i = new Scanner(System.in); 6 System.out.println("请输入数字"); 7 int j = i.nextInt(); 8 9 switch (j) { 10 case 1 : case 2 : 11 System.out.println("j =" + "1"); 12 case 3 : 13 System.out.println("j =" + "3"); 14 break; 15 case 4 : 16 System.out.println("j =" + "4"); 17 break; 18 } 19 } 20 } 21 22 运行结果 23 24 请输入数字 25 1 26 j =1 27 j =3
循环语句
for 循环
语法机制:
for(初始化表达式 ; 条件表达式 ; 更新表达式){
}
注意:
第一:初始化表达式最先执行,并且在整个循环中只执行一次。
第二:条件表达式结果必须是一个布尔类型,也就是:true或false
执行原理:
先执行初始化表达式,并且初始化表达式只执行1次。
然后判断条件表达式的结果,如果条件表达式结果为true,则执行循环体。
循环体结束之后,执行更新表达式。
更新完之后,再判断条件表达式的结果,如果还是true,继续执行循环体。
直到更新表达式执行结束之后,再次判断条件时,条件为false,for循环终止。
1 public class ForTest02{ 2 public static void main(String[] args){ 3 // 最简练的for循环怎么写? 4 // 初始化表达式、条件表达式、更新表达式 其实都不是必须的!!! 5 /* 6 for(;;){ 7 System.out.println("死循环"); 8 } 9 */ 10 11 // 最常见的for循环 12 // 循环10次,输出0~9 13 /* 14 i = 0 15 i = 1 16 i = 2 17 i = 3 18 i = 4 19 i = 5 20 i = 6 21 i = 7 22 i = 8 23 i = 9 24 25 强调一下:对于以下的这个for循环,其中int i = 0; 26 最先执行,并且只执行一次,而且i变量属于for循环 27 的局部变量,for循环结束之后i的内存就释放了。 28 这个i变量只能在for循环中使用。 29 这个i变量属于for循环域。在main方法中没有办法直接使用。 30 */ 31 for(int i = 0;i < 10;i++){ 32 System.out.println("i = " + i); // 0 1 2 3....9 33 } 34 35 //错误: 找不到符号 36 //System.out.println(i); 37 38 // i变量的作用域就扩大了。 39 int i = 0; 40 for(;i < 10;i++){ 41 System.out.println("i --> " + i); // 0 1 2 3....9 42 } 43 System.out.println("这里的i可以访问吗?i = " + i); // 10 44 45 // 变形 46 for(int k = 1; k <= 10; k++){ 47 System.out.println("k --> " + k); // 1 2 ..... 9 10 48 } 49 50 // 变形 51 for(int k = 1; k <= 10; ){ 52 System.out.println("k --> " + k); 53 k++; 54 } 55 56 // 变形 57 for(int k = 1; k <= 10; ){ 58 k++; 59 System.out.println("value --> " + k); // 2 3 4 5 6 7 8 9 10 11 60 } 61 62 } 63 }
while 循环
语法机制:
while(布尔表达式){
循环体;
}
执行原理:
判断布尔表达式的结果,如果为true就执行循环体,循环体结束之后,再次判断布尔表达式的结果,如果还是true,继续执行循环体,直到布尔表达式结果为false,while循环结束。
do ... while 循环
语法机制:
do {
循环体;
}while(布尔表达式);
注意:do..while循环最后的时候别漏掉“分号”
执行原理:
先执行循环体当中的代码,执行一次循环体之后,判断布尔表达式的结果,如果为true,则继续执行循环体,如果为false循环结束。
对于do..while循环来说,循环体至少执行1次。循环体的执行次数是:1~n次。
对于while循环来说,循环体执行次数是:0~n次。
转向语句
break 语句
1、break;语句可以用在哪里呢?
用在两个地方,其它位置不行
第一个位置:switch语句当中,用来终止switch语句的执行。
用在switch语句当中,防止case穿透现象,用来终止switch。
第二个位置:break;语句用在循环语句当中,用来终止循环的执行。
用在for当中
用在while当中
用在do....while..当中。
2、break;语句的执行并不会让整个方法结束,break;语句主要是用来终止离它最近的那个循环语句。
continue;语句:终止当前"本次"循环,直接进入下一次循环继续执行。
1、continue翻译为:继续
2、continue语句和break语句要对比着学习
3、continue语句的作用是: