本帖最后由 海螺螺 于 2020-1-25 16:07 编辑

索引贴:http://www.mcbbs.net/thread-138969-1-1.html
这一章的内容比较少,只是为了补完条件语句,等下还有一章。

条件语句:http://www.mcbbs.net/thread-141338-1-1.html

之前我们说了条件语句中的if,现在我们来说说另一个条件语句switch,英文好一点的同学知道,if是如果的意思,而switch有开关的意思。
如果把if语句翻译成我们能的语言就是:如果怎样就。而嵌套则是:如果怎样就如果怎样就。“就”(判断完成后)的后面还是一个判断。
而switch呢?如它的翻译一样,这是一个开关。
接下来我们将为大家详细的说明一下switch的用法,开关之意就很好理解了。
基本格式
  1. switch(变量)
  2. {
  3. case 条件1:命令1;
  4. break;
  5. case 条件2:命令2;
  6. break;
  7. case 条件3:命令3;
  8. break;
  9. defaut:命令4
  10. }
复制代码
我们来看代码

  1. public class book {


  2.         public static void main(String[] args)
  3.         {
  4.           int a=1;
  5.           switch(a)
  6.           {
  7.                   case 1:
  8.                           System.out.println("a=1");
  9.                           break;
  10.                   case 2:
  11.                           System.out.println("a=2");
  12.                           break;
  13.                   default:
  14.                           System.out.println("都不是诶");
  15.           }
  16.                         
  17.                         
  18.         }
  19. }
复制代码
结果看下面
a=1
为什么是这个?
很好理解对吧?
关键字switch后面括号里的变量是需要判断的变量.
case 后面的是一个固定的常量,变量值对于固定常量的时候,执行冒号后的语句.break,跳出判断.
而default这表示除此之外的情况的处理.

我们在需要大量判断的时候,很明显,switch比if更加优越.
每一个case语句后面都更着一个break.什么意思?
我们来看看另一个程序

  1. public class book {
  2.         
  3.         public static void main(String[] args)
  4.         {
  5.           int a=1;
  6.           switch(a)
  7.           {
  8.             
  9.          
  10.                   case 1:
  11.                           System.out.println("a=1");
  12.             case 2:
  13.                           System.out.println("a=2");
  14.                           break;
  15.                   default:
  16.                           System.out.println("都不是诶");
  17.          
  18.                         
  19.           }
  20.         }
  21. }
复制代码
结果
a=1
a=2
有什么不对吗?

实际上在没有break进行终止的情况下,这个语句将会从判断对的地方开始,下面的全部执行.
如果我将里面的另一个break也去掉会发生什么?

  1. public class book {
  2.         
  3.         public static void main(String[] args)
  4.         {
  5.           int a=1;
  6.           switch(a)
  7.           {
  8.             
  9.          
  10.                   case 1:
  11.                           System.out.println("a=1");
  12.             case 2:
  13.                           System.out.println("a=2");
  14.                   default:
  15.                           System.out.println("都不是诶");
  16.          
  17.                         
  18.           }
  19.         }
  20. }
复制代码
结果是
  1. a=1
  2. a=2
  3. 都不是诶
复制代码
再来看,如果把上面的a赋值为2呢?
代码我就不发了,这时的输出是
a=2
都不是诶
发现问题了吗?在判断成功后中断语句,这就是break的作用.意义不明?我们再来看一个程序.我们可以用这个来判断.
  1. public class book {
  2.         
  3.         public static void main(String[] args)
  4.         {
  5.           int a=7;
  6.           switch(a)
  7.           {
  8.             
  9.          
  10.                   case 1:
  11.                   case 2:
  12.                   case 12:
  13.                           System.out.println("银白的冬天");
  14.                           break;
  15.             case 3:
  16.             case 4:
  17.             case 5:
  18.                           System.out.println("翠绿的春天");
  19.                           break;
  20.             case 6:
  21.             case 7:
  22.             case 8:
  23.                     System.out.println("蔚蓝的夏天");
  24.                     break;
  25.             case 9:
  26.             case 10:
  27.             case 11:
  28.                     System.out.println("金黄的秋天");
  29.                     break;
  30.                   default:
  31.                           System.out.println("一年只有十二个月好吗!!!");
  32.          
  33.                         
  34.           }
  35.         }
复制代码


输出是

蔚蓝的夏天
怎么样~很不错是吧.
最后要注意的一点,default一定放在最后?当然不是,其实它可以放在任何位置.