Java基础switch01

switch语句:

  • 1、switch语句也是选择语句,也可以叫做分支语句。

  • 2、switch语句的语法格式

    switch(){
    			case1:
    				java语句;
    				java语句;...
    				break;
    			case2:
    				java语句;
    				java语句;...
    				break;
    			case3:
    				java语句;
    				java语句;...
    				break;
    			default:
    				java语句;
    			}
    

    以上是一个完整的switch语句:
    其中:break;语句不是必须的。default分支也不是必须的。

    switch语句支持的值有哪些?

    • 支持int类型以及String类型。
      但一定要注意JDK的版本,JDK8之前不支持String类型,只支持int。
      在JDK8之后,switch语句开始支持字符串String类型。
    • switch语句本质上是只支持int和String,但是byte,short,char也可以
      使用在switch语句当中,因为byte short char可以进行自动类型转换。
    • switch语句中“值”与“值1”、“值2”比较的时候会使用“==”进行比较。
  • 3、switch语句的执行原理

    • 拿“值”与“值1”进行比较,如果相同,则执行该分支中的java语句,
      然后遇到"break;"语句,switch语句就结束了。
    • 如果“值”与“值1”不相等,会继续拿“值”与“值2”进行比较,如果相同,
      则执行该分支中的java语句,然后遇到break;语句,switch结束。
    • 注意:如果分支执行了,但是分支最后没有“break;”,此时会发生case
      穿透现象。
  • 4、匹配成功的分支执行,分支当中最后有“break”语句的话,整个Switch语句终止

  • 5、匹配成功的分支执行,分支当中没有“break”语句的话,直接进入下一个分支执行(不进行匹配)
    这种现象被称为case穿透现象。【提供break;语句可以避免穿透】

  • 6、所有分支都没有匹配成功,当有default的语句话,会执行default分支当中的程序

  • 7、switch后面和case后面只能是int后者String类型的数据,不能是其它类型

    • 当然byte,short,char也可以直接写到switch和case后面,因为它们可以进行自动类型转换
      byte,short,char可以自动转换成int类型
    • JDK6的,switch和case后面只能是int类型
    • JDK7之后包括7版本在内,引入新特性
  • 8、case可以合并:

int i = 10switch(i){
				case 1 ;case 2 ;case 3; case 10:
				    Syetem.out.println("Test Code!");
			} 
public class SwitchTest01{
	
	public static void main(String[] args){
		
		/*
		// switch只支持int和String类型。
		// 错误: 不兼容的类型: 从long转换到int可能会有损失
		long x = 100L;
		switch((int)x){
			case x:
			System.out.println("就是b");
			break;
		}
		*/
		
		/*
		byte a = 10;
		switch(a){
			case a :
			System.out.println("就是a");
			break;
		}
		*/
		
		/*
		short s = 100;
		switch(s)
			
		}
		*/
		

		/*
		char c = 'a';
		switch(c){
		
		}
		*/
    
	    /*
	    //switch也支持字符串String类型。
		String username = "zhangsan";
		switch(username){
			case "username" :
			System.out.println("switch语句支持String类型!");
		}
		*/
		
		//接受用户的输入:
	    //1 表示星期一
        //2 表示星期二
        //3 表示星期三
	    //...
		//7 表示星期日
		
		//创建键盘扫描器对象
		/* java.util.Scanner  s = new java.util.Scanner(System.in);
		System.out.print("请输入数字:");
		int num = s.nextInt();//接收用户键盘输入的值
		
		switch(num){
			case 1 :  case 10 :
			    System.out.println("星期一");
		        break;
		    case 2 :
			    System.out.println("星期二");
		
		    case 3 :
			    System.out.println("星期三");
		
		    case 4 :
			    System.out.println("星期四");
		
		    case 5 :
			    System.out.println("星期五");
		
		    case 6 :
			    System.out.println("星期六");
		
		    case 7 :
			    System.out.println("星期七");
		
		    default :
			       System.out.println("你输入的星期有误!");
		} */
		/* String username = "zhangsan";
		switch(username){
			  case "zhangsan" :
			      System.out.println("我就是法外狂徒张三!");
				  break;
		} */
		
		//创建键盘扫描器对象
		java.util.Scanner  s = new java.util.Scanner(System.in);
		System.out.print("请输入星期:");
		String day03 = s.next();//接收用户键盘输入的值
		switch(day03){
			  case "星期一" :
			      System.out.print("1");
				  break;
			  case "星期二" :
			      System.out.print("2");
				  break;
			  case "星期三" :
			      System.out.print("3");
				  break;
			  case "星期四" :
			      System.out.print("4");
				  break;
			  case "星期五" :
			      System.out.print("5");
				  break;
			  case "星期六" :
			      System.out.print("6");
				  break;
			  case "星期日" :
			      System.out.print("7");
				  break;
			  default :
			      System.out.print("你输入的数据非法!");
			
           /* 			
			char c = 'A';
			switch(c){
				  case 'A' :
				      System.out.println("高级");
					  break;
				  case 66 :  //B的ANSI码
				      System.out.println("高级");
					  break;
				  case 'B' :
				      System.out.println("高级");
					  break;
				  case 'C' :
				      System.out.println("高级");
					  break;
			} */
		}
    }
}
  • 9.运行效果图:
  • switch01
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

五度鱼Java

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值