if
if语句格式1
if(条件表达式){
语句;
}
执行流程 1)当前条件表达式成立,执行语句
2)否则不成立,不执行语句; 应用场景,就是针对单个条件进行判断的
if格式2
if(表达式){
语句1;
}else{
语句2;
}
执行流程: 1)判断表达式是否成立,如果成立,执行语句1,
2)如果不成立,执行语句2; 应用场景: 就是针对两种情况进行判断;
if格式2的嵌套方式
if(表达式){
if(表达式1){
语句1;
}else{
语句2;
}
}else{
if(表达式2){
语句3;
}else{ 语句4;
}
}
if语句格式2 和三元运算符的区别
if...else:流程控制语句,范围比较广泛,不仅可以操作具体 数据值还可以操作语句
而三元运算符--是运算符的一种,它只能操作具体的数据结果值,不能直接里面嵌套使用
三元运算符能够实现的 一定能够使用if...else实现 而if...else...实现不一定能够使用三元运算符现!
if语句的格式3
if(表达式1){
语句1;
}else if(表达式2){
语句2;
}else if(表达式3){
语句3; ... ...
}else{
语句n ;
}
执行流程:
1)判断表达式1是否成立,如果成立,则执行语句1;
2)如果不成立,继续判断表达式2是否成立,如果成立,执行语句2;
3)如果表达式2不成立,继续判断表达式3是否成立,如果成立,执行语句3
...
4)如果上面的条件表达式都不成立,则执行else中的语句n....
switch
格式
switch(表达式){
case 值1: 语句1;
break ;
case 值2: 语句2; break ;
... ... ...
default: 语句n;
break ;
}
执行流程:
1)判断表达式的值和case值1进行匹配, 如果匹配成功,执行语句1,break结束
2)如果case值1不匹配,继续和case后面的值2进行比较,如果匹配,语句2执行,break结束; ...
...
3)如果上面的case的值都和switch中表达式的结果不匹配的,那么最终就执行default中的语句n,然后程序默认执行到末尾结束了,break结束;
*面试题: switch中的表达式,它可以是什么样的数据类型呢?
基本的能够使用的数据类型: byte,short,char,int
JDK5以后,可以跟枚举 (enum)
JDK7以后,可以是String类型
switch语句中的注意事项:
1)case语句后面的值只能是常量
2)case语句中的break 必须带上,否则会造成一个现象:case 穿透 由于某个case已经匹配了,此时如果没有break,那么就继续往下面中case的语句进行穿透,依次执行,遇见有case中有break的,那么switch结束!
3)switch的结束条件是什么? a)语句break结束 b)程序默认执行到末尾!
4)default语句可以在语句中的任何位置,不影响程序的执行流程! default的执行,当前case中都没有匹配的话,执行default
for
for循环的格式
for(初始化语句;条件表达式;控制体语句(步长语句)){
循环体语句;
}
执行流程: 1)初始化语句进行赋值,只执行一次
2)然后判断条件表达式是否成立 如果成立,执行循环体语句;----然后执行控制体语句(步长语句) (++/--)
3)继续判断条件表达式是否成立, 如果成立,执行循环体语句;----然后执行控制体语句(步长语句) (++/--) ... ...
4)执行到条件表达式不成立,for循环语句结束!
while
扩展格式:
初始化语句;
while(条件表达式){
循环体语句; 控制体语句(步长语句) ;
}
流程: 1)初始化语句进行赋值
2)判断条件表达式是否成立 如果成立,执行循环体语句,控制体语句对变量进行自增或者自减
3)继续判断条件表达式是否成立
4)如果条件表达式不成立,while循环结束
do-while:
初始化语句;
do{ 循环体语句; 控制体语句;
}while(条件表达式) ;
执行流程: 1)初始化语句执行
2)执行条件表达式,如果条件表达式不成立,循环体至少执行一次! 如果条件表达式成立...然后控制体语句,依次判断;
do-while循环和其他两个循环的最大的区别:循环体至少执行一次;