控制语句-选择结构(switch)

switch选择语句:

  switch语句一般情况下与if语句的效果是等效的,但是switch语句的执行速率比嵌套的if语句要快,switch语句不分单选/双选/多选结构,它的结构取决于代码的逻辑。

 

 

  表达式:

switch (条件表达式) {
        case 1:        //条件表达式执行完毕后,switch判断该值是否为1,如果是1,则执行case1 以下的代码
            代码块1;
            break;
        case 2:        //case1执行完毕后,会继续判断该值是否为2,如果是,同理执行case2以下的代码
            代码块2;
            break;
        default:       //如果条件表达式执行完毕,且该值即不等于1也不等于2,则执行该代码块
            代码块3;
            break;
        }

(注意:为了防止case穿透问题,一般在使用switch语句时都必须加上break(跳出),否则case下余的代码也会被编译执行,就毫无意义)

(注意:在JDK7之后的版本,switch语句还支持String类型,也就是说case后面的值不仅可以为数字,也可以为字符/字符串等。但是如果使用float与double会出现丢失精度的问题)

  case穿透的理解:

    当条件表达式计算完成后,程序开始执行,如果结果为1,则执行case1的代码块1。当代码块1执行完毕后,程序还会继续执行case2的代码块2,直至执行完所有case。

  一般写程序时只有需要多选择结构时才会经常用到switch语句,如果是单/双选择结构,一般用if语句即可。

  示例:

    ①使用switch语句实现一个简单的掷筛子小程序:

package exercise;

/**
 * @author 刘小将
 * switch语句:多选择结构
 * 一个简单的掷色子小程序
 */
public class TestSwitch {
    
    public static void main(String[] args) {
        
        double b = Math.random();
        int e = 1+(int)(b*6);
        switch (e) {    //switch()中默认是int型,或者自动转为int的类型(byte,short,char),也可以是枚举。JDK7版本后还支持字符串
        case 6:
            System.out.println("恭喜您,您中了一等奖!");
            break;        //注意:如果此处不加break,则会发生case穿透,第一个case后面的代码将会被全部执行编译,所以必须加上。
        case 5:
            System.out.println("恭喜您,您中了二等奖!");
            break;
        case 4:
            System.out.println("恭喜您,您中了三等奖!");
            break;
        default:
            System.out.println("很遗憾,您未中奖!");
            break;
        }
    }
}

    ②使用switch语句实现判断26个拉丁字母的音素

package exercise;

/**
 * @author 刘小将
 * switch语句:多选择结构
 * 判断26个拉丁字母的因素
 */
public class TestSwitch {
    
    public static void main(String[] args) {
        
        char a = 'a';
        int rand = (int)(26*Math.random());
        char a2 = (char)(a+rand);        //强制转型为char型
        System.out.println(a2+":");
        switch(a2) {
        case 'a':
            System.out.println("元音");
            break;
        case 'e':
            System.out.println("元音");
            break;
        case 'i':
            System.out.println("元音");
            break;
        case 'o':
            System.out.println("元音");
            break;
        case 'u':
            System.out.println("元音");
            break;
        case 'w':
            System.out.println("半元音");
            break;
        case 'y':
            System.out.println("半元音");
            break;
        default:
            System.out.println("辅音");
            break;
        }
    }
}
原文地址:https://www.cnblogs.com/joyfulcode/p/12307322.html