if/else语法
Java表达条件执行的基础语法是if语句
if(条件语句){
代码块
}
或者
if(条件语句) 代码块
只有在条件为真的情况下,对应代码语句块才会执行,为假语句块就不执行。
- 条件语句必须是布尔值
- 可以运算是一个布尔值
- 也可以变量运算后是一个布尔值
- 条件为true则执行括号{}中代码
- 如果后面没有括号就执行后面第一个分号中的代码
注意:
如果忘记if后面的代码块中加上括号,那么希望执行多条语句没有加括号,结果只会执行第一条语句,建议所有if后面都加括号。
if实现的条件是满足的时候做的操作,如果需要根据条件做分支,也就是满足的时候执行某种逻辑,而不满足的时候执行另外一种逻辑,则就可以使用if/else语法是:
if(判断条件){
代码块1
}else{
代码块2
}
if/else非常的简单,判断条件是一个布尔值,为true的时候执行代码块1,为假的时候执行代码块2。
三元运算符
判断条件?表示式1:表达式2
三元运算符会得到一个结果,判断条件为真的话,就返回表达式1的值,否则就返回表达式2的值,三元运算符经常对于某个变量进行赋值,比如求两个数之间的最大值
int max=x>y?x:y;
多判断条件
if(条件1){
代码块1
}else if(条件2){
代码块2
}else if(条件n){
代码块n
}else{
代码块n+1
}
**
- 该表达式可以表达出更为复杂的执行逻辑
- 它会逐个检查条件,条件1满足就执行代码块1
- 不满足就检查条件2
- 如果最后没有条件满足,且有else语句,就执行else里面的代码
- else不是必须的,没有就什么都不执行
注意:在if/else if /else中判断的顺序是很重要的,后面的判断只有在前面的条件为false的时候才会执行。
if(score>60){
return "及格";
}else if(score>80){
return "良好";
}else{
return "优秀";
}
**
如果score是90,可能会期望返回”优秀”,但是实际上仅仅会返回”及格”
swich判断
switch(表达式){
case 值1:
代码1;break;
case 值2:
代码2;break;
...
case 值n:
代码n;break;
default:
代码n+1;
}
**
- swich也比较简单,根据表达式的值执行不同的分支
- 根据表达式的值找匹配的case
- 找到后执行后面的代码,碰到break结束
- 如果没有找到匹配的值就执行default后的值
- 表达式的值的类型,仅仅可以是byte、short、int、char、枚举和String(Java7之后的新特性)
注意:break是指跳出swich语句,执行swich后面的语句。每条case语句后面都应该跟着break语句,否则会据需执行后面的case代码直到碰到break语句或者swich结束。比如下面的代码会输出所有的数字而不是仅仅输出1
int a=1;
switch(a){
case 1:
System.out.println("1");
case 2:
System.out.println("2");
default:
System.out.println("3");
}
**
case后面可能没有要执行的代码,如下图所示:
char c='A';
switch(c){
case 'A':
case 'B':
case 'C':
System.out.println("A-Z"); break;
case 'D':
...
}
case ‘A’/‘B’后面都没有紧跟着要执行的代码,它们会实际执行第一块碰到的代码,也就是case ‘C’匹配的代码。
总结
- 条件执行,单一条件满足时候采用if
- 根据第一个条件是否满足执行不同分支使用if/else
- 表达式复杂的条件使用if/else if/else
- 条件赋值使用三元运算符
- 根据某个表达式的值不同执行不同分支使用switch
- 过多分支的时候使用swich性能更高