大家好,我来分享一下Java流程控制当中的Switch多选择结构
看我之前的博客,你就会知道,之前的if 判断处理的是区间的问题,
而我们今天要讲的Switch多选择结构处理的是等量的问题
这是Switch语法:
下面直接写实例
package struct;
public class SwitchDemo01 {
public static void main(String[] args) {
//case 穿透 匹配一个具体的值
char grade = 'C';
switch (grade) {
case 'A':
System.out.println("优秀");
break; //每写一个,都尽可能的写break 。不然的话,他会把每一个输出
case 'B':
System.out.println("良好");
break;
case 'C':
System.out.println("及格");
break;
case 'E':
System.out.println("再接再厉");
break;
case 'D':
System.out.println("挂科");
break;
default:
System.out.println("未知等级");
}
}
}
下面直接敲实际的代码
package struct;
public class SwitchDemo01 {
public static void main(String[] args) {
//case 穿透 匹配一个具体的值
char grade = 'C'; //定义初始值变量grade=C
switch (grade) {
case 'A': //C与A比较,C不是A,所以不是结果
System.out.println("优秀"); //在控制台上输出优秀
break; //每写一个,都尽可能的写break 。不然的话,他会把每一个输出
case 'B': //B与A比较,B不是A,所以不是结果
System.out.println("良好");
break;
case 'C': //C与C比较,C就是C,所以就是结果
System.out.println("及格");
break; //结束
case 'E': //E与A比较,E不是A,所以不是结果
System.out.println("再接再厉");
break;
case 'D': //D与A比较,D不是A,所以不是结果
System.out.println("挂科");
break;
default: //如果以上的所有条件,都不能和原始值相等的情况
System.out.println("未知等级"); //控制台输出内容“未知等级”
}
}
}
看运行结果:
下面演示不写break的结果
代码如下:
package struct;
public class SwitchDemo01 {
public static void main(String[] args) {
//case 穿透 匹配一个具体的值
char grade = 'C';
switch (grade) {
case 'A':
System.out.println("优秀");
//每写一个,都尽可能的写break 。不然的话,他会把每一个输出
case 'B':
System.out.println("良好");
case 'C':
System.out.println("及格");
case 'E':
System.out.println("再接再厉");
case 'D':
System.out.println("挂科");
default:
System.out.println("未知等级");
}
}
}
运行结果如下:
所以,一定要将break 加上 //这是一个好习惯!
在写一个案例:
public class SwitchDemo02 {
public static void main(String[] args) {
//jdk7的新特性 表达式的结果可以为字符串
//字符的本质还是数字
//反编译 java========class(字节码文件)--------反编译(idea)
String name = "帅哥"; //以string数据类型,自定义变量为name,给他赋值 “帅哥”
switch (name) { //比较name 这个变量的赋值
case "帅哥": //拿帅哥跟帅哥比较 ,两个值相等
System.out.println("帅哥"); //输出信息“帅哥”
break; //结束
case "小哥哥": //拿小哥哥跟帅哥比较 ,两个值不相等,所以不行
System.out.println("小哥哥");
break;
default: //如果以上的所有条件,都不能和原始值相等的情况
System.out.println("hello"); //控制台输出hello
运行情况:
下面演示一下default 下面符合输入的情况
看代码:
package struct;
public class SwitchDemo02 {
public static void main(String[] args) {
//jdk7的新特性 表达式的结果可以为字符串
//字符的本质还是数字
//反编译 java========class(字节码文件)--------反编译(idea)
String name = "姐姐";
switch (name) {
case "帅哥":
System.out.println("帅哥");
break;
case "小哥哥":
System.out.println("小哥哥");
break;
default:
System.out.println("hello"); //上面的两种情况都不与初始变量值相等,所以最后控制台输出的结果是default后面的hello
break;
}
}
}
执行结果如下:
Switch语句运行流程:
首先要定义变量,给他赋值,‘然后程序拿这个赋值,与每一个case后面的常量比较,如果两者一致,则输出case 后对应的信息,如果不一样,则比较下一个,如果实在没有,就把default 后面对应的信息输出来
关于Java Switch 语句
我在讲几点忠告:
1.这里的default,case ,Switch,break都是Java关键字
2. Switch :是开关的意思,这个开关就是Switch关键字后面小括号里表达式的值,jdk1.7之后,Switch语句后面小括号里可以是int short byte char 枚举类型,string类型表达式
2.case : case意思是“情况,情形” ,case后面可以是int short byte char 枚举类型 ,string 类型,通常是一个固定的值,case块可以有很多个,顺序可以改变,但是每一个case 后面的常量的值必须不一样。
3.表示“默认”,就是其它的条件都不满足的时候。default后面要紧跟冒号。default和case块的先后顺序可以变,不影响程序执行的结果,通常情况下,default块放在末尾,也可以省略
break: 表示“停止”,即跳出当前结构
好了,有关于Java Switch 选择结构,就讲到这里,谢谢大家