今晚刚刚看了一点儿《大话设计模式》这本书,看到它示例的第一个程序,好像有点理解IF与SWITCH的区别了。大致的思考了总结出来。
IF适用于每个条件都必须判断,就是IF语句中的判断是不同类型的,匹配的东西是非互斥的。
而SWITCH中的判断是同类型的,匹配的东西是互斥的。
比如判断一个对象是飞机还是坦克,还是战舰,这个对象如果是飞机就不可能是坦克,不可能是战舰,互斥的。
所以这个判断用SWITCH比较妥当:
Carrier c = new Carrier(); switch(c.getType()) { case AIRPLANE: case TANK: case BATTLESHIP: }
这样,一旦作出判断,其它的判断都会失效,就不再判断了。
IF的适用情况,则是非互斥的判断,必须每一个if/else if都判断一次。
比如对用户输入的判断,判断是否为空,判断是否过长,判断是否过短。
结合SWITCH语句,举一个例子,总体上来说明下,SWITCH和IF的区别。
UserInput userInput = new UserInput(); switch(userInput.getType()) { case EMAIL_ADDRESS: String content = userInput.toString(); if (content == "") { ...... } else if (content.length < 5) { ...... } else if (content.length > 10) { ...... } break; case QQ_NUMBER: break; case NORMAL_USERNAME: break; }
粗浅理解,各位看官看看就好,不对的地方还请多多指教。