运行一个程序,它是从main()方法开始,一行一行的代码往下执行,直到到达程序的终点。但是有些时候我们希望一些代码在某些特定情况才希望他执行,或重复执行,这个时候我们需要某些技术来改变程序的控制流程。
JAVA中有三种基本技术可以改变程序的控制流程:
调用方法、选择(if/else语句 switch语句,三目运算符(例如int i=(5>3)?(5+3):(5-2)意思是5大于3吗?如果条件为真那么执行i=5+3,如果条件为假那么i=5-2)、循环。
if/else细分为三种:单分支结构,双分支结构,多分支结构。
单分支 双分支 多分支
If(boolean表达式){ If(boolean表达式) { if(boolean表达式){
执行语句块 执行语句块 执行语句块
} }else{ }else if(boolean){
执行语句块 执行语句块
} }else{
执行语句块
}
单分支是当if()中的条件成立时才会执行{}中的语句否则跳过该段代码执行
双分支if()else,中与单分支不同的是当if()不成立的时候会执行else中的语句然后在继续执行。当然如果if()条件成立else中的语句块也同样不会执行。
多分支是如果第一个条件不满足,那么就判断第二个条件是否成立如果不成立,继续判断第三个条件顺序判断,它的运行情况与双分支一样,哪个条件成立就执行该条件下面{}中的语句然后跳出整个判断语句继续执行。
Switch 选择语句
Switch(i){
case 1://语句块
break;
case 2://语句块
case 3://语句块
case 4://语句块
case 5://语句块
default://语句块
}
它的执行情况是当i=1时 执行 case 1,当i=2时执行case 2。case语句块中的break意思是当I等于1是 执行case1并跳出整个switch 语句然后继续执行后续代码。如果没有break那么当i=1时执行完case 1语句块后,会继续将后面的case 都执行一遍在执行switch语句后面的代码。除非特殊情况一般都需要break来跳出switch。
default就是在i不满足case 条件的情况下执行的语句,放在最后用于最后一种情形来退出switch。而default中不需要break 虽然他们有区别但是大致上都是执行完自身后退出switch语句
switch 与if语句,如果在纯数字或字符比较的情况下,建议选用switch,因为它只在在()中提取一次变量值与设定的case 进行比较。如果选择if语句,它会在每次执行if()时提取一次变量值与之判断。当条件的分支有5 到6个以上的时候if不如switch。
还有一个就是switch 的case 后面跟的是一个常量。
例如 int i=4
If(i==1){
}else if(i==2){
}else if(i==4){
}else{
}
Switch(i){
case 1:
break;
case 2:
break;
case 4:
break;
…
}
If会从头开始判断直到找到符合条件的if()为止,而switch会直接执行case 4然后break。
循环语句 三种
Do{
}while(boolean表达式);
While(){
}
For(变量初始化(赋值表达式);布尔表达式(循环条件);更新变量(增加或减少)){
}
这三个循环大致上又可以分为两种类型,一个是先验循环,do while 一个是后验循环for while
先验循环是先执行do{}中的循环体 在来判断while中的条件,成立继续循环,不成立退出,所以该循环至少会执行一次。
后验循环是先判断while()、for()中的条件。如果成立才会开始循环
循环中同样有循环的控制结构,它们break、continue。
其中break与switch选择语句中意思一样都是从此中断并跳出该{}继续执行,而continue是中断此次循环进入下一次循环。
三个循环语句除非特殊情况下一般不选用do while,而其他两种循环在知道循环次数的时候是可以互换的。所以用的最多的还是for循环。个人认为用for循环会让整个代码更加简单(其实他们都是要初始化变量,然后判断,然后在对变量进行更新。用起来感觉高大上一些)。至于这两个选择哪种循环,就看个人熟练度了。
洗洗睡了