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