Java 不同版本的 Switch语句

网友投稿 331 2022-07-25


目录旧的java Switch语句新的Switch语句Java Switch表达式的收益率结论

前言:

自Java13以来,Switch表达式被添加到Java核心库中。如果您使用的是Java版本13或更高版本,那么您肯定可以将旧Switch转换为新Switch。

本文将讨论它如何在不破坏现有更改的情况下提供某些功能。当然,其他语言用户可能会评论“多年前,它就已经存在于我们的编程语言中了”。但让我们微笑一下,继续用Java编程,好吗?注意,我将在帖子中交替使用“switch expression”和“switch statement”,所以请记住,我想说的是同一件事。

旧的Java Switch语句

switch语句将以更可读、更简洁的方式(并非每次)替换单个变量的if-else-if梯形图。是的,我知道,这不是一个精确的定义。

让我们看一个实际的例子。假设你按下了一个按钮,并且有了特定的按钮代码,你需要有一些与之相关的命令。现在,您可以执行第一块中显示的if-else-if梯形图,或者将其转换为第二块中显示的开关表达式:

if(button == 1) {

command = "on";

}

else if(button == 2){

command = "off";

}

else if(button == 3 || button == 4) {

command = "ring";

}

else{

throw new RuntimeException("Wrong Button Code");

}

switch表达式:

switch(button){

case 1:

command = "On";

break;

case 2:

command = "off";

break;

case 3:

case 4:

command = "ring";

break;

default:

throw new RuntimeException("Wrong Button Code");

}

正如你所见,这个switch即使我们减少了条件检查,我们也必须添加很多额外的代码,比如break语句。这就是新的Java Switch语句或表达式帮助我们的地方。与其说是一个新的,不如说是一个“更新的开关表达式”。但无论如何,让我们看看。

新的Switch语句

在新的switch语句中,您将看到的第一件事是,您根本不必编写break语句。要做到这一点,你必须使用箭头->,我们在lambda中使用的箭头,来告诉这个案例的开始。至于实际的代码块,可以将其设置为一行表达式,也可以在代码块周围使用一个花括号。

此外,对于不同case的相同评估,您不需要多次编写case语句,您可以用逗号分隔它们(例如,上例中的case3和case4)。

switch(button){

case 1 -> command = "on"; // on liner

case 2 -> {

// do something

command = "off"; // a block with curly brackets

}

case 3, 4 -> command = "ring"; // case can be combined with a comma

default -> throw new RuntimeException("Wrong Button Code");

}

看看代码变得多么简洁。不需要额外的中断声明。此外,可以在不重复关键字的情况下组合案例。但等等,不是这样的。关于这个更新的Java switch语句,还有一件事。

Java Switch表达式的收益率

我们可以从switch语句中得到一个结果。简单地说,您只能从开关块返回特定的内容。它对switch语句使用Java13新添加的yield关键字。这只不过是对开关的回报。举个例子你会更好地理解。

假设在上面的例子中,我们为每种情况都修改了命令变量。现在,我们可以直接从特定情况返回特定字符串,并将其分配给命令,而不是对同一变量UnzGfZt进行变异。你可以同时使用“冒号大小写”或“箭头大小写”。让我们看看如何。

箭头case ->

String command = switch(button){

case 1 -> {

yield "on";

}

case 2 -> {

yield "off";

}

case 3,4 -> { // multiple case

yield "ring";

}

default -> throw new RuntimeException("Wrong Button Code");

};

冒号case:

String command = switch(button){

case 1:

yield "on";

// no break should be used

case 2:

yield "off";

case 3:

case 4:

yield "ring";

default:

throw new RuntimeException("Wrong Button Code");

};

使用switch时请记住这几点:

不能在一个switch语句中交替使用冒号和箭头大小写。从箭头框中得出结果时,必须将其写在花括号中。从冒号case中生成结果时,不要使用break关键字。建议在使用yield时使用箭头框。

结论

java的switch语句或表达式不如Kotlin或Scala的switch表达式强大,但我认为我们可以看到它在不久的将来在Java中变得更加强大。在那之前,让我们试着在代码中使用这个东西。


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Java版学生管理系统
下一篇:Spring Boot Rest常用框架注解详情简介
相关文章

 发表评论

暂时没有评论,来抢沙发吧~