switch语句语法

     switch (expression) {case value://语句break;//可选//可以有任意个case语句default://可选//语句}

注意点

switch的语句中表达式expression返回类型只能是byte、char、short、int和枚举类型,java1.7开始支持String类型;

case语句值的类型必须与表达式expression的类型相同,并且是字面量或者是常量。

执行过程

从上到下进行匹配,一旦匹配到了,后面的语句块都执行,直到执行完或者遇到break;

案例分析

今天在牛客网上刷到一个题目,下面代码的输出结果是什么:

     int v1 = 0, v2 = 0, v3 = 0, v4 = 0;String str = "1314520";char[] s = str.toCharArray();for (int i = 0; i < s.length; i++) {switch (s[i]) {default:v4++;case '1':v1++;case '2':v2++;case '3':v3++;}}System.out.printf("%d,%d,%d,%d", v4, v1, v2, v3);

结果是3,5,6,7,是不是跟你的结果完全不一样?

下面我们来分析程序的执行过程:

第一轮:s[i]=s[0]='1',会执行v1++;v2++;v3++;这时候v1=1,v2=1,v3=1,v4=0

第二轮:s[i]=s[1]='3',会执行v3++;这时候v1=1,v2=1,v3=2,v4=0

第三轮:s[i]=s[2]='1',会执行v1++;v2++;v3++;这时候v1=2,v2=2,v3=3,v4=0

第四轮:s[i]=s[3]='4',会执行v4++;v1++;v2++;v3++;这时候v1=3,v2=3,v3=4,v4=1

第五轮:s[i]=s[4]='5',会执行v4++;v1++;v2++;v3++;这时候v1=4,v2=4,v3=5,v4=2

第六轮:s[i]=s[5]='2',会执行v2++;v3++;这时候v1=4,v2=5,v3=6,v4=2

第七轮:s[i]=s[6]='0',会执行v4++;v1++;v2++;v3++;这时候v1=5,v2=6,v3=7,v4=3

所以最后System.out.printf("%d,%d,%d,%d", v4, v1, v2, v3);输出结果为3,5,6,7

【Java基础篇】你真的懂switch语句吗?相关推荐

  1. Java基础篇:如何使用continue语句

    有时强迫一个循环提早反复是有用的.也就是,你可能想要继续运行循环,但是要忽略这次重复剩余的循环体的语句.实际上,goto只不过是跳过循环体,到达循环的尾部. continue语句是break语句的补充 ...

  2. 【Java基础篇】try catch finally语句包含return语句时的执行过程

    网上有很多人探讨Java中异常捕获机制try-catch-finally块中的finally语句是不是一定会被执行? 很多人都说不是,当然他们的回答是正确的,经过我试验,至少有两种情况下finally ...

  3. Java基础篇:如何嵌套try语句?

    Try语句可以被嵌套.也就是说,一个try语句可以在另一个try块内部.每次进入try语句,异常的前后关系都会被推入堆栈.如果一个内部的try语句不含特殊异常的catch处理程序,堆栈将弹出,下一个t ...

  4. Java基础篇:如何使用return语句

    控制语句return也是很重要的,今天就来说说最后一个控制语句是return.return语句用来明确地从一个方法返回.也就是,return语句使程序控制返回到调用它的方法.因此,将它分类为跳转语句. ...

  5. 菜鸟学习笔记:Java基础篇4(面向对象三大特征)

    菜鸟学习笔记:Java面向对象篇中 继承 概念 方法重写(override) Object类 Super关键字 组合 final关键字补充 封装 访问控制符 多态 继承 概念 继续上一篇的例子: #m ...

  6. 你所需要的java基础篇深入解析大汇总

    java基础篇深入解析大总结 java基础(一) 深入解析基本类型 java基础(二) 自增自减与贪心规则 java基础(三) 加强型for循环与Iterator java基础(四) java运算顺序 ...

  7. Java基础篇3——流程控制

    Java基础篇3--流程控制 1.顺序结构 正常代码的流程即是顺序流程 2.分支结构 2.1.if-else分支 if(条件表达式) {语句块1; } if(条件表达式) {语句块1; } else ...

  8. 菜鸟学习笔记:Java基础篇2(变量、运算符、流程控制语句、方法)

    菜鸟学习笔记:Java基础篇2 变量 基本概念 变量作用域 final关键字 运算符 算术运算符 比较运算符 逻辑运算符 位运算符 赋值运算符 条件运算符 运算符优先级 Java三种流程控制语句 顺序 ...

  9. Android面试题Java基础篇

    Android面试题Java基础篇,由本人整理汇总,后续将继续推出系列篇,如果喜欢请持续关注和推荐,更多精彩内容可以关注微信公众号(Android高级编程):android-tech 系列文章目录: ...

最新文章

  1. 超参数搜索——网格搜索和随机搜索
  2. hibernate 中set的3个属性(inverse,cascade,order_by)
  3. 国网浙江电力组建网络安全分析室
  4. java 多线程的使用_Java的多线程1:线程的使用
  5. CTF python沙箱逃逸进阶题目
  6. akb48_AKB48里历史——六年的终结
  7. junit rule_使用@Rule在JUnit中测试文件和目录
  8. 简述html的3种列表uloldl,语义化HTML:ul、ol和dl
  9. Java SAO操作-使用lambda代替字符串
  10. eclipse如何以javadoc方式查看源码的注释
  11. Java集合框架---重构设计
  12. windows程序设设计(2) SDK贴图
  13. 【高等数学】多元函数f(x,y...)的泰勒(Taylor)展开式
  14. ASP.NET 中处理客户端数字证书
  15. spss常态检验_科学网—如何在SPSS中进行正态分布检验?
  16. 前端|如何制作调查问卷
  17. 2022前端面试题上岸手册-浏览器部分
  18. 干草堆[单调队列优化DP]
  19. Windows11输入法第一个候选词不显示。
  20. 京东商城项目实战(1)------京东商城首页

热门文章

  1. 老板怒了,“我们赚钱你们花钱,还总出毛病!”
  2. java编写管理系统_用java编写学生信息管理系统
  3. minio 单机安装、部署 centos7环境
  4. RabbitMQ开机启动 Centos7环境
  5. 企业实战(Jenkins+GitLab+SonarQube)_12_Jenkins+soanr服务器搭建和代码检查
  6. IDEA 搭建 SpringBoot + Maven + Oracle + Hibernate 项目框架
  7. 谈谈结构体部分成员排序(重载的利用/sort)
  8. mysql数据库模型相应解释_数据库事务系列-MySQL跨行事务模型
  9. ipcp协议 Linux,Linux命令Man解释:PPPD(8) :点对点daemon协议
  10. 计算机用户 图片存储位置,手机相册在哪个文件夹,详细教您手机图片存放在哪里...