A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 我手心里的宝 高级黑马   /  2013-3-20 13:25  /  2757 人查看  /  11 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 我手心里的宝 于 2013-3-20 13:54 编辑

在switch 中
swich(num)
    case 1: System.out.println("你好");break;
这个break 可以省略吗 可不可以不写这个break
里面的类型如果是枚举的话,为什么写上break 会报错呢

评分

参与人数 1技术分 +1 收起 理由
滔哥 + 1

查看全部评分

11 个回复

倒序浏览
switch用于byte  short   int   char  类型

break不可以省略,如果没有break的话,程序会继续往下执行的

评分

参与人数 1技术分 +1 收起 理由
滔哥 + 1

查看全部评分

回复 使用道具 举报
1.这个break是不可以省略的,当然如果你只有1个case的话就无所谓了,省略break后会使语句一直往后执行,最后一句,其余的break一般不能省略。

2.注意:1.swith(x)中只接收byte,short,int,char型(这是你的第二个问题答案)
            2. 无论{}中default在何种位置都是最后执行的
            3.结束switch语句的两种情况:遇到break,执行switch语句结束。
            4.如果匹配的case或者default没有相对应的break,那么程序会继续执行,运行可以执行的语句,直到遇到break或者switch结尾结束
            If和switch语句使用场景:
            如果判断的具体数值不多,而是符合byte short int char这四种类型,建议用switch语句。Switch语句效率稍高。
            其他情况:对区间判断,对结果为boolean类型判断,使用if,if使用范围更广。
希望对你有帮助~

评分

参与人数 1技术分 +1 收起 理由
滔哥 + 1

查看全部评分

回复 使用道具 举报
小路飞 来自手机 中级黑马 2013-3-20 13:33:38
板凳
break的作用是退出循环,若没有break会继续向下执行。break可有可无,根据你的需求而定。
回复 使用道具 举报
本帖最后由 续圆凯 于 2013-3-20 13:40 编辑

此程序中的break不能省略。如果省略了,程序会继续向下执行。

switch语句中break的作用:
break 使得程序在执行完选中的分支后,可以跳出整个switch语句(即跳到switch接的一对{}之后),完成switch。如果没有这个break,程序将在继续前进到下一分支,直到遇到后面的break或者switch完成。

switch语句中,变量的类型只能是整型和字符类型。它们包含 int,char。另外枚举类型内部也是由整形或字符类型实现,所以也可以作为switch语句的变量。

评分

参与人数 1技术分 +1 收起 理由
滔哥 + 1

查看全部评分

回复 使用道具 举报
switch中case 后面可以不用break,你可以试试下面的代码,如果有个break,没有写你改变x值你看看打印的结果,比如,x=4,我把春季的后面break去掉,结果确是春季和夏季,度打印的,那就是不符合规律的了,所以当你需要的时候,你可以使用break,而不需要的时候,是可以不加的。
class  SwitchTest
{
public static void main(String[] args)
{
   int x = 4;
  switch(x)
  {
   case 3:
   case 4:
   case 5:
    System.out.println(x+"春季");
    break;
   
   case 6:
   case 7:
   case 8:
    System.out.println(x+"夏季");
    break;
   case 9:
   case 10:
   case 11:
    System.out.println(x+"秋季");
    break;
   case 12:
   case 1:
   case 2:
    System.out.println(x+"冬季");
    break;
   default:
    System.out.println("nono");
  }
  /*
switch中可以用的类型byte short int char这四种类型。  
  */
}
}

评分

参与人数 1技术分 +1 收起 理由
滔哥 + 1

查看全部评分

回复 使用道具 举报
  1. public enum CustomerType {
  2.         COMMON,EXPRESS,VIP;
  3.         public String toString(){
  4.                 switch(this){
  5.                 case COMMON: return "普通";
  6.                 case EXPRESS: return "快速";
  7.                 case VIP: return name();
  8.                 }
  9.                 return null;
  10.         }
  11. }
复制代码
但是在枚举中 加入break 就会报错

评分

参与人数 1技术分 +1 收起 理由
滔哥 + 1

查看全部评分

回复 使用道具 举报
我手心里的宝 发表于 2013-3-20 13:39
但是在枚举中 加入break 就会报错

使用的类型 byte short  char int
回复 使用道具 举报
刘辉 中级黑马 2013-3-20 13:45:01
9#
switch语句的标准格式
switch(表达式)
{
   case 常量:
   执行的代码;
   break;
case 常量:
   执行的代码
   break;
default:
   执行的代码;
   break;
}
注意事项:
switch(表达式)必须和case 后面的常量的数据类型一致
switch(表达式)接收,byte short int char
     JDK 6 :byte short int char
     JDK 7 :byte short int char String
  switch 和 if 区别:
  if 和 switch 他们接收的数据类型不一样, if 对于范围的判断比较好用, switch 最好是用于简单的数据判断,if最狠的功能,判断引用数据类型。
break在这里是不能去掉的,去掉的话程序会继续往下执行的。

评分

参与人数 1技术分 +1 收起 理由
滔哥 + 1

查看全部评分

回复 使用道具 举报
枚举的新特性是可以的 可以加入枚举类型
  1. public enum CustomerType {
  2.         COMMON,EXPRESS,VIP;
  3.         public String toString(){
  4.                 switch(this){
  5.                 case COMMON: return "普通";
  6.                 case EXPRESS: return "快速";
  7.                 case VIP: return name();
  8.                 }
  9.                 return null;
  10.         }
  11. }
复制代码
而且可以在内部用自己的对象
回复 使用道具 举报
记住就好了,对于枚举类型内部不可以加break
回复 使用道具 举报
不能省略,省略的话如果有多条case语句,程序遇到满足条件后后面的case语句还会执行,直到遇到break。
报错跟break没有关系,可能是你程序写错了。
  1. enum Num {
  2.         男,女;
  3.         }
  4. public class TestDemo {
  5.         public static void print(Num n) {
  6.                 switch(n) {
  7.                 case 男:
  8.                         System.out.println("是男的");
  9.                         break;
  10.                 case 女:
  11.                         System.out.println("是女的");
  12.                         break;
  13.                 default :
  14.                         break;
  15.                 }
  16.         }
  17.         public static void main(String[] args) {
  18.                 Num n[] = Num.values();
  19.                 for(int i = 0; i < n.length ; i ++) {
  20.                         print(n[i]);
  21.                 }
  22.                
  23.         }
  24. }
复制代码
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马