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性能更高
