一、结构:

  java程序的流程控制分为3种:顺序结构、分支结构、循环结构;

  

 

1.1顺结构:

  顺序结构只能顺序执行,不能进行判断和选择,因此需要分支结构。

1.2分支结构;

  if和switch语句;

1.2.1 if单分支:

  

public class Test{
    public static void main(String[] args){
        // 随机产生一个随机整数[10,30]
        int r = (int)(Math.random()*(30-10+1)) + 10;
        
        if(r > 15){
            System.out.println(r+">15");
        }else{
            System.out.println(r+"<=15");
        }
        
    }
}

1.2.2if 多分支:

public class Test01{
    public static void main(String[] args){
        // 随机产生一个随机整数[10,30]
        int r = (int)(Math.random()*(30-10+1)) + 10;
        
        if(r > 15){
            System.out.println(r+">15");
        }else if(r == 15){
            System.out.println(r+"=15");
        }else{
            System.out.println(r+"<15");
        }
        
    }
}

  注意:

  a、 ifelse关键字只能写一次,else if视情况而定;

  b、if分支时,如果判断大于大的值,用>,如果判断小于小的值,用<号,进行代码优化;

1.3  if嵌套

 

public class Test{
    public static void main(String[] args){
        float time = 9.5f;
        char sex = '男';
        
        // [1] 进入决赛
        if(time < 10){
            // [2]性别判断
            if(sex == '男'){
                System.out.println("进入男子组");
            }else {
                System.out.println("进入女子组");
            }
        }else{
            System.out.println("oops,不能进入决赛");
        }
        
    }
}

 

  注意:嵌套的深度不易超过4

1.4  多值匹配分支switch

  

public class Test{
    public static void main(String[] args){
switch(week){
            case 1:{
                System.out.println("写代码");
                // 结束继续匹配
                break;
            }
            case 2:{
                System.out.println("看电影");
                break;
            }
            case 3:{
                System.out.println("打游戏");
                break;
            }
            case 4:{
                System.out.println("旅游");
                break;
            }
            case 5:{
                System.out.println("开房打游戏");
                break;
            }
            case 6:{
                System.out.println("打牌");
                break;
            }
            case 7:{
                System.out.println("睡觉");
                break;
            }
            default:{
                System.out.println("默认匹配...");
                break;
            }
        }
}
}

1.5 switch的两种特殊的情况:

1.5.1 省略break;

public class Test{
       public static void main(String[] args){
        int week = 1;
        switch(week){
            case 1:{
                System.out.println("写代码");
            }
            case 2:{
                System.out.println("看电影");
            }
            case 3:{
                System.out.println("打游戏");
                break;
            }
            case 4:{
                System.out.println("旅游");
                break;
            }
            case 5:{
                System.out.println("开房打游戏");
                break;
            }
            case 6:{
                System.out.println("打牌");
                break;
            }
            case 7:{
                System.out.println("睡觉");
                break;
            }
            default:{
                System.out.println("默认匹配...");
                break;
            }
        }
}
}

  输出:写代码 看电影 打游戏;

1.5.2  当多个case的结果一行时,可以省略整个语句块;

  

public class Test08{
    public static void main(String[] args){
        
        // 随机产生一个字符(a-z)判断是元音还是辅音
        // [a,z]
        // [0,25]+a
        int r = (int)(Math.random() * (25-0+1)) + 0;
        char c = (char)(r + 'a');
        System.out.println("c = " + c);
        
        switch(c){
            case 'a':
            case 'e':
            case 'i':
            case 'o':
            case 'u':{
                System.out.println("元音:"+c);
                break;
            }
            case 'y':
            case 'r':
            case 'w':{
                System.out.println("半元音:"+c);
                break;
            }
            default:{
                System.out.println("辅音:"+c);
                break;
            }
        }
        
    }
}

 

注意:switch表达式支持的匹配方式有整形char、字符串(jdk1.7以上)迫不得已时不要用字符串匹配字符串在switch匹配过程中,效率极低。

二、if 和 switch 的比较:

2.1 对比:

相同点:都是分支语句;

 

不同点:switch 只能进行等值匹配条件必须是整形、char类型,jdk1.7之后支持字符串。

 

  if 没有switch选择结构的限制,特别适合某个变量处于某个连续区间时的情况;