java中switch的使用

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,enum,break,continue)