int str = null;
    
     switch(str)
     {
     case "asdf":System.out.println("sdfas");
     }

解决方案 »

  1.   

    恩。老大说的对。
    貌似VB.NET里的select case 就可以不止INT型的 BOOLEAN的都行。嘿嘿
      

  2.   

    合法的case表达式:
    1 与判断表达式相匹配
    2 自身是常量
    3 不能有两个相同的case
      

  3.   

    规定只能为byte,short,int,char,jdk1.5又引入枚举类型,只能为这5种之一吧
      

  4.   

    jdk7 will support String switch 
      

  5.   

    switch中条件只能使用常量,枚举
      

  6.   

    swtich是否能作用在byte 上,是否能作用在long上,是否能作用在String上?
    switch(expr1)中,
    expr1是一个整数表达式。
    因此传递给 switch  和 case  语句的参数应该是 int、 short、 char  
    或者 byte。long,
    string  都不能作用于swtich。 
    switch 不能接受类型的引用类型。。不能接受,Integer,Short,Char,String 也属于这一类中,所以不能用了
      

  7.   

    因为进入 case 分支的测试是 x == y,
    如果用String 就要 x.equal(y) 了,
    语法不支持,所以不允许咯
      

  8.   

    java中swithch语句只能探测int类型值 
      

  9.   

    switch 这种属于结构化程序设计中的语法,在面向对象设计中应该使用多态来取代 switch 的多选分支。
      

  10.   

    学习了,以前只知道switch不能用string,现在明白了
      String是一个final类型的对象,并且产生的对象一般是对象的引用,所以用case的“==”来判断str==str2比较的是常量池中对象的地址,
      不知道这样总结对嘛O(∩_∩)O哈哈~,大家多指教拉了拉
      

  11.   

    这个跟switch不能用String没关系,只是规定不能用
      

  12.   

    openjdk上好像有人在做让swith支持string的项目
      

  13.   

    转不成int类型
      

  14.   

    主要是因为switch只支持int 兼容的数据类型吧
      

  15.   

    string 是对像,不是基本类型,所以不行