/*
关于switch语句(我称为匹配语句):
1.switch语句也属于选择结构,也是分支语句
2.switch语句的语法结构:
一个比较完整的switch语句应该这样编写:
//case有匹配的意思,相当于拿数据匹配,拿数据匹配
//case穿透现象,意思是当break不存在的时候,即使第一个不匹配,也会一直按顺序往下面匹配,直到遇见break;跳出结构体
switch(int和String类型的字面值或变量){
case int和String类型的字面值或变量:
Java语句;
Java语句;
break;
case int和String类型的字面值或变量:
Java语句;
Java语句;
break;
default:
java语句;
}
3.switch语句的执行原理:
switch后面小括号中的"数据"和case后面的"数据"进行一一匹配,匹配成功的分支执行。
4.匹配成功的分支执行,分支中最后面有"break;"语句的话,整个switch语句都会终止。
5.匹配成功的分支执行,分支当中没有"break;"语句的话,直接进入下一个分支执行(不进行匹配的时候),
这种现象被称为case穿透现象【意思是提供break;语句可以避免穿透】
6.所有分支都没有匹配成功,当有default的语句,会执行default分支当中的程序。
7.switch后面括号内和case后面只能是int或者是String类型的数据,不能是探测其它类型的数据。
*当然byte,short,char也可以直接写在switch和case后面,因它们可以进行自动类型转换。
*JDK6低版本的,switch和case后面只能探测int类型。
8.case可以合并
int i=10;
switch(i){
case 1:case2:case3:case10:
}
*/
public class switch01
{public static void main(String[] args){
/*数值类型错误,大容量向小容量转换需要强制转换
//编译报错long a=10L;int b=a;long x=10L;switch(x){}
*///解决编译报错
//实际上是进行一次强制转换
long x=100L;
switch((int) x){}//同样
byte b=10;
switch(b){}short s=10;
switch(s){}//string类型
String uesrname="zansan";
swtich(username){}//关于case穿透
/*
需求:接受用户的输入
1表示星期一,以此类推
*/java.util.Scanner s=new java.util.Scanner(System.in);
System.out.print("请输入数字");
int num=s.nextInt();
switch(num){
case 1:System.out.println("星期一");break;//当break;不存在的时候,输入1,会显示星期一和星期二//虽然输入1没有匹配下面的2,但是会执行2
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("对不起,您输入的数字错误");
}//switch确实可以探测String类型,这是java7的新特性//例如:
java.util.Scanner s=new java.util.Scanner(System.in);System.out.println("请输入今天星期几");String dayWeek=s.next();//从此处检测switch(dayWeek){case"星期一":System.out.println(1);
case"星期二":System.out.println(2);
case"星期三":System.out.println(3);
default:System.out.println("不合法");}//用switch实现计算机中的+-* /%
/*实现思路:1.选择所有数据从键盘输入2.使用switch语句进行判断3.需要从控制台输入三次:*第一个数字*运算符*第二个数字最终在控制台上是这样的一个场景:欢迎使用计算机请输入第一个数字:10请输入运算符:+-* / %请输入第二个数字:20运算结果:10+20=30*/
java.util.Scanner s=new java.util.Scanner(System.in);
System.out.println("请输入第一个数字");
int a=s.nextInt();
System.out.println("请输入一个运算符");
String b=s.next();
System.out.println("请输入第二个数字");
int c=s.nextInt();int result=0;switch(b){case "+":result=a+c;break;case "-":result=a-c;break;case "*":rusult=a*c;break;case "/":result=a/c;break;case "%":result=a%c;break;default:System.out.println("输入非法");System.out.println("运算结果:"+a+b+c+"="+result);}}
}