首页 > 基础教程 > 循环条件语句 > 条件语句switch

Java switch 用法实例

switch允比对一个变量的值,来执行不同情况的代码。switch使用规则如下:

1、在switch语句中使用的expression只能是一个字节,short,int和或char,enum本身为int,所以也可以使用(jdk1.7以后可以使用String)。

2、switch可以有任何数量的case语句。每个case后面是进行比较的值和":"。

3、case后面的值与expression类型必须相同,必须是一个常量。

4、当case后面的值与expression等于,则执行case对应的代码段,直到break语句为止。

5、直行到break语句,直接跳出switch,执行后续代码。

6、不是每一个case都要有break。如果没有break,则会继续执行下一个case对应的代码段,直到break为止。break关键字详解看这里:break与contine分别如何使用

7、switch语句可以有一个默认case,它必须出现在所有case之后。默认情况下,没有case是true时,执行default对应代码段。

switch(A),括号中A的取值可以是byte、short、int、char、String,还有枚举类型,应用举例:

//(1)byte

byte baction=2;

switch (baction)

{

case 1:System.out.print(baction);break;

case 2:System.out.print(baction);break;

}

//(2)short

short saction=3;

switch (saction)

{

case 1:System.out.print(saction);break;

case 3:System.out.print(saction);break;

}

//(3)int

int iaction=4;

switch (iaction)

{

case 1:System.out.print(iaction);break;

case 4:System.out.print(iaction);break;

}

//(4)char

char caction='a';

switch (caction)

{

case 1:System.out.print(caction);break;

case 'a':System.out.print(caction);break;

}

//(5)String

String straction="abc";

switch (straction)

{

case "1":System.out.print(straction);break;

case "abc":System.out.print(straction);break;

}

//(6)枚举

String fullStr="00000000000000";

CompletedProgressEnum action=CompletedProgressEnum.basic;

StringBuilder sb = new StringBuilder(fullStr);

switch (action)

{

case basic:sb.replace(0, 2,CompletedProgressEnum.basic.getValue()); break;

case edu:sb.replace(2, 4,CompletedProgressEnum.edu.getValue());break;

}

注意:long类型不能作为switch参数。

case B;case是常量表达式,也就是说B的取值只能是常量(需要定义一个final型的常量)或者int、byte、short、char(比如1、2、3、200000000000(注意了这是整型))。 如果没有符合的case,就执行default,default为非必选项。

二.正确案例分析:

1.标准型(case后面都有break语句,case后的值都是整数)

int i=3;

switch(i)

{

case 1:

System.out.println(1);

break;

case 2:

System.out.println(2);

break;

default:

System.out.println("default");

break;

}

2.常量型(case后面都有break语句,case后的值都是常量)

private final int NUM1=1;

private final int NUM2=1;

int i=3;

switch(i)

{

case NUM1:

System.out.println(1);

break;

case NUM2:

System.out.println(2);

break;

default:

System.out.println("default");

break;

}

三.错误案例分析:

1.第二种情况容易出错的情况:

发现问题

private int CLICK_QUERY = 1;

private int CLICK_RESET = 2;

@Override

public void onClick(View v)

{

int tag = (Integer) v.getTag();

switch (tag)

{

case CLICK_QUERY:

query();

break;

case CLICK_RESET:

reset();

break;

}

}

编译时一直报错:CLICK_QUERY 和CLICK_RESET——case expressions must be constant expressions

解决问题:

case后面必须跟常量,必须要常量,将上面两个变量声明为final即可。

private final int CLICK_QUERY = 1;

private final int CLICK_RESET = 2;

2.下面是switch的简单写法:

switch(A){

case B;

}

final型的变量也是有要求的,也即是它必须是编译时的常量,怎么讲呢,看下面的程序段:

final int a = 0;

final int b;

第二个语句就是在编译时不能够被识别出值的变量,因为它没有初始化,当然,这条语句也是错误的。所以总结case后的值可以是常数值或final型的值。再看下面的程序段:

byte a = 11;

switch(a){// C

case 11 : System.out.println(" 11 "); break;

case 225 : System.out.println(" 11 "); break;// D

}

该代码正确吗?答案是否定的。虽然在 C 处是合法的也即是byte型的a值可以出现在switch中,但是 D处的语句也即是第二个case后的值是225大小超过了byte的范围,所以是错误的。再就是case后的值不能出现重复。因此在使用中要注意。

3.忘记写break的错误

再就是在使用switch-case中最容易忽视的就是忘记在每个case后处理完后忘记写上break;语句。那它带来的后果是什么呢,下面小程序段会告诉你:

byte a = 2;

switch(a){

case 1 : System.out.println(" A ");

case 2 : System.out.println(" B ");

case 3 : System.out.println(" C ");

case 4 : System.out.println(" D ");

default : System.out.println(" default ");

}

=========输出结果为:

B

C

D

default

--------------------------

版权声明:本文为JAVASCHOOL原创文章,未经本站允许不得转载。

java switch 变量_Java switch 用法实例相关推荐

  1. java循环变量_Java初学——Java入门变量 常量选择循环结构

    一.初识java 1.jdk的介绍 下载安装jdk 安装后会存在默认的安装路径 bin 目录:存放编译,运行 Java 程序的可执行文件 lib 目录:存放 Java 的类库文件 jre 目录:存放 ...

  2. java类名变量_java类名操作变量方法

    JAVA中包括成员变量的定义和方法的定义,而成员变量的定义又包括类变量和实例变量的定义:其中用static 修饰的是类变量,而其他是实例变量. 实例变量和类变量的区别:一个类通过使用new 运算符可以 ...

  3. java环境变量_java环境变量

    1. PATH环境变量.作用是指定命令搜索路径,在shell下面执行命令时,它会到PATH变量所指定的路径中查找看是否能找到相应的命令程序.我们需要把 jdk安装目录下的bin目录增加到现有的PATH ...

  4. 三元运算符java 案例_javascript三元运算符用法实例

    三元运算符用法实例: 如名字表示的三元运算符需要三个操作数. 语法是 条件 ? 结果1 : 结果2;. 这里你把条件写在问号(?)的前面后面跟着用冒号(:)分隔的结果1和结果2.满足条件时结果1否则结 ...

  5. choose when 改在java中_Mybatis choose when用法实例代码

    mybatis choose when的用法实现代码如下所示: mapper.xml: select a.city_id as CITYID, a.level1_maintain_unit_id as ...

  6. java switch 类型_Java switch case数据类型原理解析

    这篇文章主要介绍了Java switch case数据类型原理解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 Java 中 switch cas ...

  7. java switch原则_Java switch case语句

    switch case 语句判断一个变量与一系列值中某个值是否相等,每个值称为一个分支. switch case 语句语法格式如下: switch(expression){ case value : ...

  8. java switch 值_Java switch多值匹配操作详解

    这篇文章主要介绍了Java switch多值匹配操作详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 我们都知道 switch 用来走流程分支,大 ...

  9. java 多态性 变量_java – 与实例变量的多态性

    参见英文答案 > Overriding member variables in Java                                    10个 这是我写的三个类: pub ...

最新文章

  1. 解决IDEA快捷键 Alt+Insert 失效的问题
  2. VB2005.Net 环境下使用Jmail组件发送邮件
  3. centos 删除crontab_centos下crontab的使用
  4. HTTP协议中POST、GET、HEAD、PUT等请求方法及相应值得含义
  5. python 网页自动化框架_python+selenium自动化框架
  6. md5加密算法的C(C++)代码实现
  7. linux 根目录分配多少好,Linux下硬盘怎么分区才合适:根分区(/)交换分区(/swap)和/boot分区需要多大...
  8. java异常处理 ppt_Java异常处理、多线程ppt课件
  9. 集群tomcat+session共享
  10. git管理工具commit后提交记录消失不见
  11. 行政区划编码转换区域名工具类
  12. 电视和计算机共享视频,电脑中的图片视频一键共享到电视上去看
  13. 教你修改Win7系统的登录界面背景
  14. PCAN-Explorer5 基本使用方法
  15. [翻译]Batch Normalization: Accelerating Deep Network Training by Reducing Internal Covariate Shift
  16. 初学python者自学anaconda的正确姿势是什么?
  17. Python实现支持向量机SVM分类模型线性SVM决策过程的可视化项目实战
  18. 深入理解feature_column
  19. NoSQL学习笔记之MongoDB-01初识NoSQL
  20. 5教程 watchout_初中英语阅读课教学交流

热门文章

  1. C语言—一道面试题(品茗股份)
  2. 一键重启 java 应用
  3. js图片加载不出来时隐藏图片
  4. 数据结构——哈夫曼(Huffman)树+哈夫曼编码
  5. 坦克大战easyx实现
  6. 消息验证码-MAC算法总结
  7. pc端html轮播带滑块,原生js实现移动端+pc端 轮播插件
  8. List删除指定数据的几种方法总结
  9. ArrayList删除指定元素
  10. 店宝宝:威马汽车官宣入驻拼多多,“拼车”事业稳了?