控制语句中的if和switch
控制语句的出现可以让我们的程序具有逻辑性/条理性,可以使用控制语句来实现一个“业务”了。
- 控制语句包括三类
- 选择语句
- 循环语句
- 转向语句
- 选择语句也可以叫做分支语句
- if语句
- switch语句
- 循环语句:主要循环反复的去执行某段特定的代码块
- for循环
- while循环
- do while 循环
- 转向语句
- break
- continue
- return(这个目前先不需要学习,后面讲方法的是会使用)
if语句是分支语句,也可以叫做条件语句。
if语句的语法格式:
第一种写法:
if(布尔表达式){
java语句;
}
这里的一个大括号{}叫做一个分支。
如果布尔表达式的结果true,则执行大括号中的程序,否则大括号中代码不执行。
第二种写法:
if(布尔表达式){ //分支1
java语句;
}else{ //分支2
java语句;
}
如果布尔表达式的结果是true,则执行分支1,分支2不执行,如果布尔表达式的结果是false,分支1不执行,执行分支2.
以上的这个语句可以保证一定会有一个分支执行。
第三种写法:
if(布尔表达式1){ //分支1
java语句;
}else if(布尔表达式2){ //分支2
java语句;
}else if(布尔表达式3){ //分支3
java语句;
}else if(布尔表达式4){ //分支4
java语句;
}
先判断布尔表达式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){ //分支3
java语句;
}else if(布尔表达式4){ //分支4
java语句;
}else{ //以上条件没有一个成立的,这个else就执行了
}
- 对if的总结
- 1.对于if语句来说,在任何情况下只能有一个分支执行,不可能存在两个或者更多个分支执行。if语句中只要有一个分支执行了,整个if语句就结束了。(对于一个完整的if语句来说的)
- 2.以上四种语法机制中,凡是带有else分支的,一定开业保证会有一个分支执行,以上4种当中,第一种和第三种没有else分支,这样的语句可能会导致最后一个分支也不执行。第二种和第四种肯定会有一个分支执行。
- 3.当分支当中java语句只有一条,那么大括号可以省略,但是为了可读性,最好不要省略,(有的程序员在编写代码的时候,可能回故意将大括号省略,你能看懂就行)。
- 4.控制语句和控制语句之间是可以嵌套的,但是嵌套的时候大家孔一个语句一个语句进行分析,不要冗杂在一起分析。
- 窍门:分析外面if语句的时候,里面的这个if语句可以看做是普通的一堆java代码。
switch语句也是选择语句,也可以叫做分支语句。
switch语句的语法格式:
switch(数值){
case 数值1:
java语句;
break;
case 数值2:
java语句:
break;
case 数值3:
java语句;
break;
default;
java语句;
}
以上是一个完整的switch语句:
其中:break:不是必须的,default分支也不是必须的。
switch语句支持的数值有哪些?
支持int和String类型。
但一定要注意JDK的版本,JDK8之前不支持String类型,只支持int,
在JDK8之后,switch语句开始支持字符串String类型。
switch语句中的数值与数值1,数值2比较的时候会使用==进行比较。
switch语句本质上只支持int和String,但是byte,short,char也可以使用在switch语句中,因为byte,short,char可以进行自动类型转化成int。
switch语句的执行原理:
拿数值与数值1进行比较,如果相同,则执行该分支中的java语句,
然后遇到break语句,switch语句就结束了。
如果数值与数值1不相等,会继续拿数值与数值2进行比较,如果相同,则执行该分支中的java语句,switch语句就结束了。
注意:如果分支执行了,但是分支最后没有break,此时会发生case穿透现象。
所有的case都没有匹配成功,那么最后的default分支会执行。
- 点赞
- 收藏
- 关注作者
评论(0)