【switch】java中不支持String,那么是否意味着可以放弃switch,用if else代替?
有个java老程序员和我说,他从来不用switch,都是用if else。如果把用switch的语句改成if else程序运行的复杂度是否会增加?

解决方案 »

  1.   

    用if else也是一样的,把出现频率比较高的条件放在前面来判断,这样就和switch中使用break的效果差不多了。条条大路通罗马,怎么方便怎么来,呵呵
      

  2.   

    Java和其他语言的编译器都对switch做了一些优化,所以在相同的条件下,switch会更有效一些,但是switch的局限就是不能支持更多的比较类型,所以在可以使用switch的情况下推荐用switch,不能使用的话只有if else了。
      

  3.   

    写成if else 也不嫌麻烦。。呵呵
      

  4.   

    有时灵活运用switch有意想不到的好处!
     不过大部分时候都用不到
      

  5.   

    请问有没有用SWITCH特别方便的实例
      

  6.   

         我个人觉得,同样的多项的判断,switch比if逻辑上要清晰的多。所以能用switch的我都尽量用switch。
         不过不支持string型倒是挺郁闷的。
      

  7.   

    如果语句短的话用起 if else反而看起来更舒服,如果判断的较多的话 用SWITCH 复杂度应该差不多, 看你个人
      

  8.   

    比如你要对月份进行处理,你是喜欢用switch(month)
    然后 case 0: 
    case 1:
    ...
    case 12:
    去分析
    还是用一堆 if else  来判断?switch会生成一个查找表,但是效率高低还要实际测试。
      

  9.   

    无意中看到你这篇帖子 觉的你所谓的老程序员还真是老呀 代码完全不考虑性能的么 
    java中switch 也是可以变相实现String的比较的
    代码如下,希望能帮助你
    enum StrList{car,dog,human}
    switch(StrList.valueOf(incommingStr.toLowerCase())){case car://codebreak;case dog:
    //codebreak;case human://codebreak;}
      

  10.   

    中 的 switch 只能是特定类型
      

  11.   

    if else 是可以代替switch 但在不同情况下是不一样的 
     如果是判断具体的10个数的话
    如果用if else 要用10次 就要写十次if else 看的也不是很清楚
    而用switch 10个case 就行 看的还清晰
    我觉得还是看情况用 如果就是喜欢哪一个那也随便
      

  12.   

    switch 是面向过程中遗留下来的,在面向对象中应该采用多态的方式来取代 switch
      

  13.   

    switch简单明了,为什么非要抱着if-else不放呢。
      

  14.   

    byte short int char用switch,别的用if/else
      

  15.   

    其实switch是只适用于基本数据类型,而不适用于复杂数据类型,String在java中不是基本数据类型,而是一个复杂类型,所以switch是不可以用的,但是在C#中string是一个基本数据类型,所以C#中的switch是可以用string的,不过,据说jdk1.7打算把string作为一种基础数据类型了,那么这就意味着在jdk1.7版本以后string类型是可以被switch运用了。