“嗨,阿米戈!”
“你好,Bilaabo!很高兴再次见到你。只有你的讲座非常好并且易于理解。不像这个 Java 内存模型。”
“是的,比拉博很会选课,今天就给大家讲讲switch语句。”
“我想已经有人告诉我了。”
“Ellie 做到了。那么,Amigo 不想听有关 switch 语句的课程吗?也许你会开始教自己的?”
“不,我想,我想。让我们听听 switch 语句。”
“好的。在Java中,有一种叫做switch语句的东西,当你需要根据某个变量的不同值来执行某些动作时,它很方便。”
带开关的例子 | 等效代码 |
---|---|
|
|
如果传递给它的变量与关键字 case 后面的值匹配,switch语句可以让您跳转到所需的代码段。
如果 i 为 1,则执行将跳转到标记为 «case 1» 的行。
如果 i 为 2,则执行将跳转到标记为 «case 2» 的行。
如果 i 为 3,则执行将跳转到标记为 «case 3» 的行。
“如果没有跳转到任何案例,则执行 «default» 块。”
“我明白了。右边是相同的逻辑,但使用 if 语句实现?”
“是的。”
“那‘break’这个词是怎么回事?你说它只能在循环中使用?”
“对,还有这里。当break语句执行时,我们立即退出switch。”
“但是如果去掉break语句,那么switch里面的所有行都会执行到最后。”
例子 | 输出(对于 i = 1) | 输出(对于 i = 2) |
---|---|---|
|
一二 三多 _ _ |
二 三 许多 |
“实际上,case是代码中的一个标签。在switch语句中,我们跳转到下一个标签,开始执行所有代码,直到switch结束,或者直到遇到break语句。”
“所以,如果我们不写 break,那么我们跳转到的行将被执行,然后是所有其他行,直到右大括号。是这样吗?”
“是的。”
“小菜一碟。但我更喜欢使用 if 语句。它们没有这些毫无意义的 break 语句。”
“的确,if 语句通常更紧凑。但 switch 语句有时更具可读性。”
“比较:”
带开关的例子 | 等效代码 |
---|---|
|
|
“我不会说它更具可读性。”
“好吧,但是这个例子呢?”
带开关的例子 | 等效代码 |
---|---|
|
|
“Bilaabo,你的例子看起来不太对。所以,如果我使用 return,我可以省略 break 语句吗?”
“没错,一个return语句会立即退出这个方法。”
“似乎 if 语句总是更紧凑。但是这次 switch 语句变得更具可读性。”
“呼,终于。”
“还有一件事。你不必在最后写默认值。如果你不这样做,那么如果没有标签匹配,什么也不会发生。”
“嗯,完全正确。就像 if-else,但可读性更强!”
“太好了。我很高兴你喜欢我的课。”
“哦,我差点忘了。最初,你只能在 switch 语句中使用原始类型和枚举。但现在他们增加了对字符串的支持。”
“你的意思是我写这个?”
public int getNumber(String number)
{
switch(number)
{
case "one":
return 1;
case "two":
return 2;
case "three":
return 3;
default:
return -1;
}
}
“是的。方便吧?”
“是的。Switch语句很棒!”
GO TO FULL VERSION