自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