开关,案例,默认 - 1

“嗨,阿米戈!”

“你好,Bilaabo!很高兴再次见到你。只有你的讲座非常好并且易​​于理解。不像这个 Java 内存模型。”

“是的,比拉博很会选课,今天就给大家讲讲switch语句。”

“我想已经有人告诉我了。”

“Ellie 做到了。那么,Amigo 不想听有关 switch 语句的课程吗?也许你会开始教自己的?”

“不,我想,我想。让我们听听 switch 语句。”

“好的。在Java中,有一种叫做switch语句的东西,当你需要根据某个变量的不同值来执行某些动作时,它很方便。”

带开关的例子 等效代码
int i = 5;
switch(i)
{
 case 1:
  System.out.println("one");
  break;
 case 2:
  System.out.println("two");
  break;
 case 3:
  System.out.println("three");
  break;
 default:
  System.out.println("many");
}
int i = 5;
if (i == 1)
{
 System.out.println("one");
}
else if (i == 2)
{
 System.out.println("two");
}
else if (i == 3)
{
 System.out.println("three");
}
else
{
 System.out.println("many");
}

如果传递给它的变量与关键字 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)
switch(i)
{
 case 1:
  System.out.println("one");
 case 2:
  System.out.println("two");
 case 3:
  System.out.println("three");
 default:
  System.out.println("many"); }
一二 三多
_ _



许多

“实际上,case是代码中的一个标签。在switch语句中,我们跳转到下一个标签,开始执行所有代码,直到switch结束,或者直到遇到break语句。”

“所以,如果我们不写 break,那么我们跳转到的行将被执行,然后是所有其他行,直到右大括号。是这样吗?”

“是的。”

“小菜一碟。但我更喜欢使用 if 语句。它们没有这些毫无意义的 break 语句。”

“的确,if 语句通常更紧凑。但 switch 语句有时更具可读性。”

“比较:”

带开关的例子 等效代码
public String getName(int i)
{
 switch(i)
 {
  case 1:
   return "one";
  case 2:
   return "two";
  case 3:
   return "three";
  default:
   return "many";
}
public String getName(int i)
{
 if (i == 1)
  return "one";

 if (i == 2)
  return "two";

 if (i == 3)
  return "three";

return "many"
}

“我不会说它更具可读性。”

“好吧,但是这个例子呢?”

带开关的例子 等效代码
public String getName(int i)
{
 switch(i)
 {
  case 1:
  case 2:
   return "one or two";
  case 3:
  case 4:
  case 5:
   return "three to five";
  default:
   return "many";
}
public String getName(int i)
{
 if (i == 1 || i == 2)
  return "one or two";

 if (i == 3 || i == 4 || i == 5)
  return "three to five";

return "many"
}

“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语句很棒!”