当前位置:首页 > 开发 > 编程语言 > Java > 正文

java中switch的使用

发表于: 2014-07-01   作者:bingyingao   来源:转载   浏览:
摘要: java中的switch仅支持case条件仅支持int、enum两种类型。 用enum的时候,不能直接写下列形式。 switch (timeType) { case ProdtransTimeTypeEnum.DAILY: break; default: br
java中的switch仅支持case条件仅支持int、enum两种类型。
用enum的时候,不能直接写下列形式。

switch (timeType) {
            case ProdtransTimeTypeEnum.DAILY:

                break;

            default:
                break;
        }


而是先import进来此枚举类,case中直接写枚举值

switch (timeType) {
            case DAILY:

                break;

            default:
                break;
        }


使用误区1
今天在做一个需求时,碰到一个类似如下switch语句。
for (int i = 0; i < 5; i++) {
            System.out.println("-----------------" + i);
            switch (i) {
                case 1:
                    System.out.println(1);
                    continue;
                case 2:
                    System.out.println(2);
                    return;
                case 3:
                    System.out.println(3);
                    break;
                default:
                    System.out.println("default");
                    break;
            }
        }



我要做的是,对是否continue循环加一个条件判断,我是这样改的:

for (int i = 0; i < 5; i++) {
            System.out.println("-----------------" + i);
            switch (i) {
                case 1:
                    System.out.println(1);
                    if (条件) {
                        break;
                    } else {
                        continue;
                    }
                case 2:
                    System.out.println(2);
                    return;
                case 3:
                    System.out.println(3);
                    break;
                default:
                    System.out.println("default");
                    break;
            }
        }

测试发现这样改不对,循环在满足条件的情况下没有跳出,继续循环了。。。问题原因就是:break只是跳出了switch,并没有跳出for循环。

为什么会犯这个错误?
1. 对switch理解不深。
2. switch里的continue, return误导了我。
continue和break经常配对出现在循环中,continue是退出本次循环,break是跳出整个循环,return是跳出整个方法。而这个例子里break只是跳出了switch。。。

switch的标准写法是这样的:
switch(integral-selector) {
case integral-value1: statement;break;
case integral-value2: statement;break;
case integral-value3: statement;break;
case integral-value4: statement;break;
case integral-value5: statement;break;
default: statement;
} 

如果省略break,程序会继续执行其他case直到遇到下一个break。

我个人建议在用switch的时候尽量选择这样的标准写法,不要加入continue、return等,代码可读性差而且容易犯错。。。特别是在本来逻辑就复杂的情况下,很难关注到switch里的这个细节了。

java中switch的使用

  • 0

    开心

    开心

  • 0

    板砖

    板砖

  • 0

    感动

    感动

  • 0

    有用

    有用

  • 0

    疑问

    疑问

  • 0

    难过

    难过

  • 0

    无聊

    无聊

  • 0

    震惊

    震惊

编辑推荐
Java中不能将float和doublu类数据作为switch(...)中的表达式! 其它语言有待验证-_-!... 验证代码如
DK1.7新特性,记得以前在Eclipse中传个字符串给switch(args)中的args是可以的。但在 Intellij IDEA
通常而言大家普遍的认知里switch case的效率高于if else。根据我的理解而言switch的查找类似于二叉
不得不说的几点小秘密: 1、 switch 后面小括号中表达式的值必须是整型或字符型 2、 case 后面的值
当需要对选项进行等值判断时,使用switch语句更加简洁明了。 语法: 执行过程中,当switch后表达式
我将以下小例子为大家讲述。 import java.util.Scanner; public class text1{ public static void m
上一篇文章:java 代码重构-第一章(使用策略模式,把恶心的 switch代码去掉...) 一 下一篇文章:java
一、下划线 在objective-c中,下划线(_) 并没有太大作用,一般用来定义变量名称,比如成员变量的定
文件名称:test.cpp 作 者:刘元龙 完成日期:2012 年 10月 25 日 版 本 号:v1.0 输入描述:循环
从Java视角理解系统结构 在 高性能编程时,经常接触到多线程. 起初我们的理解是, 多个线程并行地执行
版权所有 IT知识库 CopyRight © 2009-2015 IT知识库 IT610.com , All Rights Reserved. 京ICP备09083238号