switch case穿透Java_Java switch的用法与case的穿透现象举例详解
switch和if-else的用法类似:
if(x == 3) {
}else if(x == 30) {
}else if(x == -6) {
}else {
}等同于switch的:
switch(x) {
case 3:
break;
case 30:
break;
case -6:
break;
default:
}
如果switch的case中不包含break,则即使运行了某个case中的代码,仍会检测其他case并一直运行到最后。
switch parameter的数据类型:
switch(int, short, byte, char, string){}
switch example: AgeCalculator.java
import javax.swing.JOptionPane;
import java.util.Calendar;
public class AgeCalculator {
private static int daysSince_01_01_1900(int month, int date, int year) {
int days = (int)((year - 1900) * 365.25);
switch(month) {
case 12:
days += 30;
case 11:
days += 31;
case 10:
days += 30;
case 9:
days += 31;
case 8:
days += 31;
case 7:
days += 30;
case 6:
days += 31;
case 5:
days += 30;
case 4:
days += 31;
case 3:
days += (year % 4 == 0)? 29 : 28;
case 2:
days += 31;
}
days += date;
return days;
}
public static void main(String[] args) {
String birthday = JOptionPane.showInputDialog("Enter your birthday (MM/DD/YYYY): ");
int birthMonth = Integer.parseInt(birthday.substring(0, 2));
int birthDay = Integer.parseInt(birthday.substring(3, 5));
int birthYear = Integer.parseInt(birthday.substring(6, 10));
Calendar calendar = Calendar.getInstance();
int todayMonth = calendar.get(Calendar.MONTH) + 1; // returns 0 for January!
int todayDay = calendar.get(Calendar.DAY_OF_MONTH);
int todayYear = calendar.get(Calendar.YEAR);
int todayDays = daysSince_01_01_1900(todayMonth, todayDay, todayYear);
int birthdayDays = daysSince_01_01_1900(birthMonth, birthDay, birthYear);
int ageDays = (todayDays - birthdayDays);
System.out.println("You are " + ageDays + " days old.");
System.out.println("That is " + ageDays * 24 * 60 * 60 + " seconds!");
}
}输入为:
02/27/1998
输出为:
You are 7244 days old.
That is 625881600 seconds!
switch中代码相同的case是可以归并的,类似于在if-else的Boolean中使用"||"。
example:
public class BetterSwitch {
public static void main(String[] args) {
String digitString = JOptionPane.showInputDialog("Enter a single digit.");
int digit = Integer.parseInt(digitString);
int mysteryValue = 0;
switch(digit) {
case 0:
case 4:
case 5:
case 9:
mysteryValue = 4;
break;
case 1:
case 2:
case 6:
mysteryValue = 3;
break;
case 3:
case 7:
case 8:
mysteryValue = 5;
break;
default:
throw new RuntimeException("Illegal Value: " + digit);
}
System.out.println("Mystery value is " + mysteryValue);
}
}以上代码就等同于:
import javax.swing.JOptionPane;
public class PlainSwitch {
public static void main(String[] args) {
String digitString = JOptionPane.showInputDialog("Enter a single digit.");
int digit = Integer.parseInt(digitString);
int mysteryValue = 0;
switch(digit) {
case 0:
mysteryValue = 4;
break;
case 1:
mysteryValue = 3;
break;
case 2:
mysteryValue = 3;
break;
case 3:
mysteryValue = 5;
break;
case 4:
mysteryValue = 4;
break;
case 5:
mysteryValue = 4;
break;
case 6:
mysteryValue = 3;
break;
case 7:
mysteryValue = 5;
break;
case 8:
mysteryValue = 5;
break;
case 9:
mysteryValue = 4;
default:
throw new RuntimeException("Illegal value: " + digit);
}
System.out.println("Mystery value is " + mysteryValue);
}
}
switch case穿透Java_Java switch的用法与case的穿透现象举例详解相关推荐
- design短语的用法总结_最新高中英语知识点详解之design的用法及常见短语
英语的应用越来越广泛了,我们必须好好来学习英语知识.对此小学频道编辑为大家整理了最新高中英语知识点详解之design的用法及常见短语.详情如下: design的用法 n.设计;图案;构思 vt.设计; ...
- Redis缓存穿透、缓存击穿、缓存雪崩及其多种处理方式详解
文章目录 一.缓存穿透(数据查不到) 1.概念 2.解决方案 (1)解决方案一:缓存空对象 (2)解决方案二:布隆过滤器 二.缓存击穿(访问量太大,缓存正好过期) 1.概述 2.解决方案 (1)解决方 ...
- php中fwrite函数的用法,fwrite函数介绍与使用方法详解
以下正文:这篇文章主要介绍了PHP文件读写操作相关函数总结,本文总结了fwrite().fread().fgets().fgetc().file().readfile() 等函数的介绍及使用例子一.f ...
- c语言swatch的用法返回,Linux swatch系统监控程序命令详解
swatch(simple watcher) 功能说明:系统监控程序. 语 法:swatch [-A ][-c ][-f ][-I ][-P ][-r ][-t ] 补充说明:swatch可用来监控系 ...
- java serializable用法_JAVA序列化Serializable及Externalizable区别详解
序列化简介 Java 的对象序列化将那些实现 Serializable 接口的对象转换成一个字节序列,并能在之后将这个字节序列完全恢复为原来的对象. 这就意味着 Java 对象在网络上的传输可以不依赖 ...
- python中itertools的用法_python中的itertools的使用详解
今天了解了下python中内置模块itertools的使用,熟悉下,看能不能以后少写几个for,嘿嘿
- java exception用法_Java基础回顾_Exception异常使用详解
package 内部类异常包装器; public class 异常 { /** * 1.异常: * 有Error和Exception两个基本子类 * 2.Error: * Error表示恢复不是不可能 ...
- java file用法_Java File 类的使用方法详解(转)
转自:http://www.codeceo.com/article/java-file-class.html Java File类的功能非常强大,利用Java基本上可以对文件进行所有的操作.本文将对J ...
- vue 中provide的用法_Vue多级组件provide/inject使用详解
这次给大家带来Vue多级组件provide/inject使用详解,Vue多级组件provide/inject使用的注意事项有哪些,下面就是实战案例,一起来看一下. provide / inject 是 ...
最新文章
- 《不留》--王菲 Faye
- 模块加载过程代码分析1
- 微信公众平台开发书籍推荐
- PAT甲级题目翻译+答案 AcWing(进位制)
- 【转】从 ArcGIS for Desktop 发布地图服务
- [技术收藏]关于IOPS
- 常用的Linux的命令
- Struts2学习笔记(十) OGNL
- dos命令怎样进入计算机,怎么进DOS命令的方法
- Windows放大镜黑屏问题以及快捷键
- USBKEY全解析---概要介绍
- 使用 dva 如何配置异步加载路由组件
- 【欧拉计划第 1 题】3 或 5 的倍数 Multiples of 3 or 5
- jdk官网下载与安装
- 1024@程序员:图灵社区福利来了,请本人签收
- Enow ICQ上的自白
- 采用OKR框架如何使组织敏捷
- 【BLE MIDI】MIDI 文件格式分析 ( MIDI 轨道分析 | MIDI 轨道头 | MIDI 轨道长度 | delta-time 间隔 )
- )用计算机解决问题的基本过程是(,计算机解决问题基本过程 答案.doc
- 手机生产:第一天量产1台,接下来2天(即第二、三天)每天量产2件,接下来3天(即第四、五、六天)每天量产3件
热门文章
- vsftp pam mysql_实验记录:vsftp整合mysql-pam管理虚拟账号
- CMake-add_executable()
- 解决RHEL无法访问NTFS
- Azure Synapse Analytics简介第1部分:什么是Azure Synapse Analytics?
- HTTP错误500.30——ANCM进程内启动失败——.NET Core
- AI队列长度检测:使用Keras进行对象检测
- 使用Swagger,ApiExplorer和NSwag掌握ASP.NET Core和ABP中的外部Web API
- php返回json套数组_教你PHP怎么不用框架写优雅的中小网站
- spring security oauth2_SpringBoot2 整合OAuth2实现统一认证
- html编写气泡对话框,HTML+CSS入门 纯CSS手写圆角气泡对话框