首页 > 编程知识 正文

java for switch,java中switch的用途

时间:2023-05-03 22:19:09 阅读:194185 作者:4896

1、使用case L ->箭头标签的switch代码

1)JDK13以前的switch代码switch (day) {

case MONDAY:

case FRIDAY:

case SUNDAY:

System.out.println(6);

break;

case TUESDAY:

System.out.println(7);

break;

case THURSDAY:

case SATURDAY:

System.out.println(8);

break;

case WEDNESDAY:

System.out.println(9);

break;

}

2)JDK13新写法switch代码switch (day) {

case MONDAY, FRIDAY, SUNDAY -> System.out.println(6);

case TUESDAY -> System.out.println(7);

case THURSDAY, SATURDAY -> System.out.println(8);

case WEDNESDAY -> System.out.println(9);

}

2、使用case L -> 箭头标签简化的写法

除了case L :开关模块中的传统标签外,我们还提出了一种带有case L ->标签的简化形式。如果标签匹配,则仅执行箭头右侧的表达式或语句;否则,将不执行任何操作。没有失败。例如,给定以下switch使用新标签形式的语句:static void howMany(int k) {

switch (k) {

case 1 -> System.out.println("one");

case 2 -> System.out.println("two");

default -> System.out.println("many");

}

}

如下代码:howMany(1);

howMany(2);

howMany(3);

结果如下:one

two

many

3、使用switch表达式

我们将扩展该switch语句,以便可以将其用作表达式。例如,howMany可以将以前的方法重写为使用switch表达式,因此它仅使用单个println。static void howMany(int k) {

System.out.println(

switch (k) {

case 1 -> "one"

case 2 -> "two"

default -> "many"

}

);

}

在通常情况下,switch表达式将如下所示:T result = switch (arg) {

case L1 -> e1;

case L2 -> e2;

default -> e3;

};

4、switch中使用yield返回值

大多数switch表达式在“ case L ->”开关标签的右侧都有一个表达式。如果需要一个完整的块,我们引入一个新的yield语句来产生一个值,该值成为封闭switch表达式的值。int j = switch (day) {

case MONDAY -> 0;

case TUESDAY -> 1;

default -> {

int k = day.toString().length();

int result = f(k);

yield result;

}

};

这两个语句break带有或不带有标签)和yield便于在switch语句和switch表达式之间消除歧义:switch语句而不是switch表达式可以成为break语句的目标;和switch表达,但不是一个switch语句可以是一个目标yield的语句。

switch表达式必须以一个值正常完成,或者必须通过引发异常来突然完成。int i = switch (day) {

case MONDAY -> {

System.out.println("Monday");

// ERROR! Block doesn't contain a yield statement

}

default -> 1;

};

i = switch (day) {

case MONDAY, TUESDAY, WEDNESDAY:

yield 0;

default:

System.out.println("Second half of the week");

// ERROR! Group doesn't contain a yield statement

};

控制语句,break,yield,return和continue,无法通过跳switch表达式,如在以下内容:for (int i = 0; i < MAX_VALUE; ++i) {

int k = switch (e) {

case 0:

yield 1;

case 1:

yield 2;

default:

continue z;

// ERROR! Illegal jump through a switch expression

};

...

}

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。