一、switch的用法

常见用法如下:

import java.util.Scanner;
public class A {public static void main(String[] args) {Scanner sc = new Scanner(System.in);int score = sc.nextInt();if (score > 100 && score < 0){System.out.println("输入错误");return ;}//作为一个程序员该有的思想switch(score / 10){case 10:case 9:System.out.println("优秀");break;case 8:System.out.println("良好");break;case 7:System.out.println("中等");break;case 6:System.out.println("及格");break;default :System.out.println("不及格");break;}}
}

注意:
1、switch后的变量支持int及以下(char,short,byte),String,Enum,必须要赋初值,也可以这样赋值switch(score = 0)

switch 不支持 long,是因为 switch 的设计初衷是对那些只有少数的几个值进行等值判断,如果值过于复杂,那么还是用 if 比较合适。


另一种说法
在switch(expr1)中,expr1只能是一个整数表达式或者枚举常量(更大字体),整数表达式可以是int基本类型或Integer包装类型,由于,byte,short,char都可以隐含转换为int,所以,这些类型以及这些类型的包装类型也是可以的。显然,long、float、double类型不符合switch的语法规定,并且不能被隐式转换成int类型,所以,它们不能作用于swtich语句中。
注意:String类型是Java7开始支持的。


2、case之后的值必须和switch变量的类型一致

3、default的用法:在没有匹配到的情况或匹配到的代码块没有break,就会执行default代码;
通俗的讲,default是在没有 case 语句的值和变量值相等的时候执行;

4.switch后的变量还可以做运算。

break的常见应用情况:(在需要的时候别忘了加break)

1、case中两个或多个值进行一样的操作。

import java.util.Scanner;
public class B {public static void main(String[] args) {Scanner sc = new Scanner(System.in);int month = sc.nextInt();if (month < 1 && month > 12){System.out.println("输入错误");}switch (month){case 1:case 3:case 5:case 7:case 8:case 10:case 12:System.out.println(31);break;case 4:case 6:case 9:case 11:System.out.println(30);break;case 2:System.out.println(29);break;default:System.out.println("输入错误");}}
}

2、case语句没有break时,匹配成功后,从当前 case 开始,后续所有 case 的值都会输出。

public int getValue(int i) {int result = 0;switch (i) {case 1:result = result + i;case 2:result = result + i * 2;case 3:result = result + i * 3;}return result;}

3、如果当前匹配成功的 case 语句块没有 break 语句,则从当前 case 开始,后续所有 case 的值都会输出,如果后续的 case 语句块有 break 语句则会跳出判断。(掉过坑)
案例如下:

public int getValue(int i) {int result = 0;switch (i) {case 1:result = result + i;case 2:result = result + i * 2;break;case 3:result = result + i * 3;}return result;

翻车现场:

public class Demo {public static void main(String args[]) {char c = 'A' ;int num = 10 ;switch(c) {case 'B' :num ++ ;case 'A' :num ++ ;case 'Y' :num ++ ;break ;default :num -- ;}System.out.println(num) ;}
}

当时把这条情况给忘了,想着匹配’A’之后,向下执行default语句,结果为10;但是现实是残酷的

java中switch的用法和逻辑运算符相关推荐

  1. java中instanceof的用法和实战

    https://blog.csdn.net/qq_37192800/article/details/78861387 https://www.cnblogs.com/zjxynq/p/5882756. ...

  2. java中switch用法举例范围_Java中Switch用法代码示例

    一.java当中的switch与C#相比有以下区别 注:在java中switch后的表达式的类型只能为以下几种:byte.short.char.int(在Java1.6中是这样), 在java1.7后 ...

  3. Java中switch都可以支持哪些数据类型

    Java中switch都可以支持哪些数据类型 在JDK1.5之前,switch循环只支持byte short char int四种数据类型. JDK1.5 在switch循环中增加了枚举类与byte ...

  4. 品味性能之道十一:JAVA中switch和if性能比较

    通常而言大家普遍的认知里switch case的效率高于if else.根据我的理解而言switch的查找类似于二叉树,if则是线性查找.按照此逻辑推理对于对比条件数目大于3时switch更优,并且对 ...

  5. Java 中 switch 的用法

    Java 中 switch 的用法 1.switch 中的表达式的数据的数据类型为 byte, short, int, char, String(jdk > 1.7支持 String 类型) 2 ...

  6. java中List的用法和实例详解

    Java中List的用法和实例详解 List的用法 List包括List接口以及List接口的所有实现类.因为List接口实现了Collection接口,所以List接口拥有Collection接口提 ...

  7. 关于Java中Switch支持的数据类型

    Java中Switch支持byte.short.char.int四种基本类型,在JDK1.5中支持了枚举类型以及byte.short.char.int四种基本数据类型的包装类,在JDK1.7中支持了S ...

  8. Java中switch对整型/字符型/字符串型具体实现细节

    转自:http://www.hollischuang.com/archives/61 Java7中switch中支持的数据类型有: byte short int char String类型 其实swi ...

  9. 面试题解析:1 Java中switch语句可以作用在enum上的测试

    enum是java中的枚举,其实枚举是一个常量,枚举就是定义枚举类的一个实例. 定义枚举的时候,应该注意一下几个问题: 其构造方法应该是private 的,为什么呢?根据我的理解,应为枚举是个常量,枚 ...

最新文章

  1. exchange online share mailbox senditem
  2. 朱俊彦团队提出GAN压缩算法:计算量减少20倍,生成效果不变,GPU、CPU统统能加速...
  3. Python中标准模块importlib详解
  4. 从svn导入项目后处理一些报错信息
  5. FastClick使用之trigger触发click失效
  6. SQL之 UNION ALL 和UNION
  7. 回文数、括号匹配(栈操作)
  8. mysql multi主从复制_mysqld_multi方式配置Mysql数据库主从复制
  9. [数据结构] 图 ,邻接矩阵法,邻接表法
  10. spring-第十四篇之资源访问Resource接口
  11. Kafka权威指南 —— 读书笔记
  12. 毕设项目 - 基于SSM的企业公寓宿舍后勤管理系统(含源码+论文)
  13. 学生选课管理信息系统
  14. (ChibiOS )嵌入式操作系统 与 (OSAL)操作系统抽象层
  15. vim实现CTRL+S为保存快捷键
  16. qq达人怎么引流?手机QQ怎么引流?
  17. 智能窗帘控制(语音、时间、光、红外)
  18. 动态(视频)图像拼接和EDF景深融合解决方案(源码分享)
  19. ionic-移动端web的性能优化开源组件
  20. android系统如何获得外置卡路径

热门文章

  1. 用Python学习吴恩达机器学习——梯度下降算法理论篇
  2. 双单线激光雷达数据融合
  3. div设置滚动条和滚动条属性
  4. 全球及中国千兆路由器行业市场规模调研及投资风险预测报告2022-2028年
  5. 工具箱@CMD实用命令
  6. Kubernetes的Pod详解
  7. 计算机毕业设计(附源码)python学生社团管理
  8. STM32系统时钟树分析
  9. 安全配置管理 (SCM):建立安全的基础
  10. 填坑之路——使用阿里云OSS上传文件