语法结构:
switch(表达式){
case 常量表达式1:
语句块1;
break;
case 常量表达式2:
语句块2;
break;
……
case 常量表达式n:
语句块n;
break;
default:
语句块n+1;
break;
}
执行规律:
在程序执行到switch选择结构时,首先计算括号里表达式,将表达式的值与第一个case后的常量表达式1的值进行比较,如果值相同;则程序流程转进语句块1,执行语句块1里的内容,break结束整个switch选择结构 ;否则将将表达式的值与第二个case后面的常量表达式2的值进行比较,以此类推,只有表达式的值与case后的表达式的值相同,程序流程才转入表达式里的代码块,执行到break结束整个switch选择结构 ;如果表达式的值与全部的case后的表达式的值都不匹配,则执行defaultl里的代码块,执行到break结束整个switch选择结构。流程图如下:
流程图:
例如:
输入Java学习成绩, 90-100之间为优秀,80-89之间为优良,70-79之间为良好,60-69之间为及格,60分以下为不及格。
package cn.work.text;
import java.util.Scanner;
public class text01 {
public static void main(String[] args){
/*
* 输入Java学习成绩,
* 90-100之间为优秀,
* 80-89之间为优良,
* 70-79之间为良好,
* 60-69之间为及格
* 60分以下为不及格。
*/
Scanner in = new Scanner(System.in);
System.out.println("请输入Java成绩:");
int score = in.nextInt();
switch(score / 10){
case 9:
System.out.println("Java成绩优秀");
break;
case 8:
System.out.println("Java成绩优良");
break;
case 7:
System.out.println("Java成绩良好");
break;
case 6:
System.out.println("Java成绩及格");
break;
default:
System.out.println("Java成绩不及格");
break;
}
}
}
注意:
- switch的值可以是char、byte、shirt、int、枚举类型、字符串类型(与JDK版本有关)。
- case后的常量表达式结果不能相同。
- case后的常量表达式内不能出现变量。
- default与if选择结构中的else想用,当switch括号里的条件表达式与全部case后的常量表达式值不匹配时,执行default语句。
- default语句可以省略不写,但当switch括号里的条件表达式与全部case后的常量表达式值不匹配时,整个switch选择结构不执行。
- default语句可以卸载switch中的任意位置,一般写在最后位置。
- break的作用是结束switch选择结构,如果没有break结束switch选择结构会产生“穿透”现象。
switch选择结构与if多分枝选择结构的相同点与不同点:
相同点:
都能用来处理拥有多种条件的情况
不同点:
switch选择结构只能用来处理表达式与常量表达式值相同的情况。
if多分枝选择结构既能处理值相同的情况,也能处理变量在某个连续值的情况。