if/else语法

Java表达条件执行的基础语法是if语句

  1. if(条件语句){
  2. 代码块
  3. }

或者
if(条件语句) 代码块
只有在条件为真的情况下,对应代码语句块才会执行,为假语句块就不执行。

  • 条件语句必须是布尔值
    • 可以运算是一个布尔值
    • 也可以变量运算后是一个布尔值
  • 条件为true则执行括号{}中代码
  • 如果后面没有括号就执行后面第一个分号中的代码

注意:
如果忘记if后面的代码块中加上括号,那么希望执行多条语句没有加括号,结果只会执行第一条语句,建议所有if后面都加括号。
if实现的条件是满足的时候做的操作,如果需要根据条件做分支,也就是满足的时候执行某种逻辑,而不满足的时候执行另外一种逻辑,则就可以使用if/else语法是:

  1. if(判断条件){
  2. 代码块1
  3. }else{
  4. 代码块2
  5. }

if/else非常的简单,判断条件是一个布尔值,为true的时候执行代码块1,为假的时候执行代码块2。

三元运算符

判断条件?表示式1:表达式2
三元运算符会得到一个结果,判断条件为真的话,就返回表达式1的值,否则就返回表达式2的值,三元运算符经常对于某个变量进行赋值,比如求两个数之间的最大值

  1. int max=x>y?x:y;

多判断条件

  1. if(条件1){
  2. 代码块1
  3. }else if(条件2){
  4. 代码块2
  5. }else if(条件n){
  6. 代码块n
  7. }else{
  8. 代码块n+1
  9. }

**

  • 该表达式可以表达出更为复杂的执行逻辑
  • 它会逐个检查条件,条件1满足就执行代码块1
  • 不满足就检查条件2
  • 如果最后没有条件满足,且有else语句,就执行else里面的代码
  • else不是必须的,没有就什么都不执行

注意:在if/else if /else中判断的顺序是很重要的,后面的判断只有在前面的条件为false的时候才会执行。

  1. if(score>60){
  2. return "及格";
  3. }else if(score>80){
  4. return "良好";
  5. }else{
  6. return "优秀";
  7. }

**
如果score是90,可能会期望返回”优秀”,但是实际上仅仅会返回”及格”

swich判断

  1. switch(表达式){
  2. case 1:
  3. 代码1;break;
  4. case 2:
  5. 代码2;break;
  6. ...
  7. case n:
  8. 代码n;break;
  9. default:
  10. 代码n+1;
  11. }

**

  • swich也比较简单,根据表达式的值执行不同的分支
  • 根据表达式的值找匹配的case
  • 找到后执行后面的代码,碰到break结束
  • 如果没有找到匹配的值就执行default后的值
  • 表达式的值的类型,仅仅可以是byte、short、int、char、枚举和String(Java7之后的新特性)

注意:break是指跳出swich语句,执行swich后面的语句。每条case语句后面都应该跟着break语句,否则会据需执行后面的case代码直到碰到break语句或者swich结束。比如下面的代码会输出所有的数字而不是仅仅输出1

  1. int a=1;
  2. switch(a){
  3. case 1:
  4. System.out.println("1");
  5. case 2:
  6. System.out.println("2");
  7. default:
  8. System.out.println("3");
  9. }

**
case后面可能没有要执行的代码,如下图所示:

  1. char c='A';
  2. switch(c){
  3. case 'A':
  4. case 'B':
  5. case 'C':
  6. System.out.println("A-Z"); break;
  7. case 'D':
  8. ...
  9. }

case ‘A’/‘B’后面都没有紧跟着要执行的代码,它们会实际执行第一块碰到的代码,也就是case ‘C’匹配的代码。

总结

  • 条件执行,单一条件满足时候采用if
  • 根据第一个条件是否满足执行不同分支使用if/else
  • 表达式复杂的条件使用if/else if/else
  • 条件赋值使用三元运算符
  • 根据某个表达式的值不同执行不同分支使用switch
  • 过多分支的时候使用swich性能更高