Java——震惊大佬的《控制语句》
原创
©著作权归作者所有:来自51CTO博客作者无敌小污龙的原创作品,请联系作者获取转载授权,否则将追究法律责任
一、控制选择结构
1.if语句(被称为分支语句/条件控制语句)四种写法
第一种写法:
int a = 100;
int b = 200;
if(布尔表达式){
java语句;
java语句;
}
这里的一个大括号{} 叫做一个分支。
该语法的执行原理是:
如果布尔表达式的结果是true,则执行大括
号中的程序,否则大括号中代码不执行。
第二种写法:
if(布尔表达式){ // 分支1
java语句;
}else{ // 分支2
java语句;
}
执行原理:如果布尔表达式的结果是true,则执行分支1,分支2不执行。
如果布尔表达式的结果是false,分支1不执行,执行分支2.
以上的这个语句可以保证一定会有一个分支执行。
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就执行了。
}
注:
- 对于if语句来说,在任何情况下只能有1个分支执行,不可能 存在2个或者更多个分支执行。if语句中只要有1个分支执行了, 整个if语句就结束了。(对于1个完整的if语句来说的。)
- 以上4种语法机制中,凡是带有else分支的,一定可以保证会有 一个分支执行。以上4种当中,第一种和第三种没有else分支,这样的语句可能会导致最后一个分支都不执行。第二种和第四种肯定会有 1个分支执行。
- 当分支当中“java语句;”只有1条,那么大括号{}可以省略,但为了 可读性,最好不要省略。(有的程序员在编写代码的时候,可能会故意 将大括号{}省略,你能看懂就行。)
2.switch语句
switch(值){
case 值1:
java语句;
java语句;...
break;
case 值2:
java语句;
java语句;...
break;
case 值3:
java语句;
java语句;...
break;
default:
java语句;
}
- switch后面小括号中的“数据”和case后中的“数据”一一进行匹配,匹配成功的分支执行
- 所有分支都不匹配,如果有default语句的话,执行它的分支的语句
- 匹配成功的分支执行,分支中有“break”语句的话,switch语句终止
- 如果没有“break”语句的话,直接进入下一分支执行(不匹配),称为case穿透现象
switch (score) {
case 10:
case 9:
ans = "优";
break;
case 8:
ans = "良";
//break;
case 7:
ans = "中";
break;
case 6:
ans = "及格";
break;
case 5:
case 4:
case 3:
case 2:
case 1:
case 0:
ans = "不及格";
break;
default:
ans = "输入的成绩有误";
}
//case10、case9 和 case 5、case 4、 case 3、case 2、 case 1、case 0都是属于case合并
//比如进入case8由于case8没有break会case穿透到case7才结束
二、循环结构
1.for语句
for(初始化表达式; 布尔表达式; 更新表达式){
循环体; // 循环体由java语句构成
java语句;
java语句;
java语句;
java语句;
....
}
- 先执行初始化表达式,并且初始化表达式只执行1次。然后判断布尔表达式的结果,如果布尔表达式结果为true,则执行循环体。循环体结束之后,执行更新表达式。更新完之后,再判断布尔表达式的结果,如果还是true,继续执行循环体。直到更新表达式执行结束之后,再次判断条件时,条件为false,for循环终止。
- 初始,布尔,更新表达式都不是必须的,不写为死循环,但是分号必须写
2.while循环
- 判断布尔表达式的结果,如果为true就执行循环体,循环体结束之后,再次判断布尔表达式的结果,如果还是true,继续执行循环体,直到布尔表达式结果为false,while循环结束。
for(初始化表达式; 布尔表达式; 更新表达式){
循环体;
}
初始化表达式;
while(布尔表达式){
循环体;
更新表达式;
}
3.do while循环
do {
循环体;
}while(布尔表达式);//注意do while语句最后是以分号结尾
- 先执行循环体当中的代码,执行一次循环体之后,判断布尔表达式的结果,如果为true,则继续执行循环体,如果为false循环结束。
三、控制循环结构
1.break(中断/折断)表示循环结束了
- switch语句当中,用来终止switch语句的执行。 用在switch语句当中,防止case穿透现象,用来终止switch。
- 用在for,while,do while,循环语句中用来跳出循环,终止循环的执行
public class YootkDemo {
public static void main(String args[]) {
for (int num = 1 ; num < 10 ; num ++) {
if (num == 3) { // 设置一个分支结构
System.out.println("我心目中的女神出现了,并且主动的坐在了我吃饭的餐桌对面,我放下大饼!") ;
break ; // 结束整个循环
}
System.out.println("开始吃第“" + num + "”张大饼,吃的满口流油!") ;
}
}
}
程序执行结果:
开始吃第“1”张大饼,吃的满口流油!
开始吃第“2”张大饼,吃的满口流油!
我心目中的女神出现了,并且主动的坐在了我吃饭的餐桌对面,我放下大饼!
2.continue(继续/下一个)
- 用在循环语句中!表示终止当前"本次"循环,直接进入下一次循环继续执行
public class YootkDemo {
public static void main(String args[]) {
for (int num = 1 ; num < 10 ; num ++) {
if (num == 3) { // 设置一个分支结构
System.out.println("我心目中的女神出现了,并且主动的坐在了我吃饭的餐桌对面,我放下大饼!") ;
continue ; // 结束一次吃饼动作
}
System.out.println("开始吃第“" + num + "”张大饼,吃的满口流油!") ;
}
}
}
程序执行结果:
开始吃第“1”张大饼,吃的满口流油!
开始吃第“2”张大饼,吃的满口流油!
我心目中的女神出现了,并且主动的坐在了我吃饭的餐桌对面,我放下大饼!
开始吃第“4”张大饼,吃的满口流油!
开始吃第“5”张大饼,吃的满口流油!
开始吃第“6”张大饼,吃的满口流油!
开始吃第“7”张大饼,吃的满口流油!
开始吃第“8”张大饼,吃的满口流油!
开始吃第“9”张大饼,吃的满口流油!
结论:continue结束一次循环调用,而break是退出整个的循环结构。