为什么要写switch case,之前用java的时候,还没感觉到,后来写逻辑回归,xgboost机器学习,甚至写NLP,CNN的时候,会发现有点不舒服,没有switch case ,要写很多if else因为大多情况下都是用python写,python是没有switch case的。。。
首先case是没有先后顺序的,然后代码是从上到下读的,听起来是挺别扭的。。。。
![b93befba192fac805d5d26db82619549.png](https://i-blog.csdnimg.cn/blog_migrate/d8f47ce64b40a7dec0d9a99fc9dfdd0f.jpeg)
如果case语句后面没有写break的话,那么继续下一个case,结果呢,在碰见break之前所有的都是打印的。default后面的break可以省略,但是,看下图。
![d48057afcecb9ec7edd9921fb1d96bec.png](https://i-blog.csdnimg.cn/blog_migrate/8a5206fa1bbcb2f49d56419349da685b.jpeg)
首先是不进default的,对x进行选择,首先是进第一个case,不满足,然后进第二个case,不满足,进第三个case,不满足,然后走default,打印No,注意了各位,default后面没有break,走完default之后,不再判断case,不再判断case,不再判断case,这个代码的话是只打印syso,程序从上往下走,把该执行的都执行完,直到遇到break。 所以打印的结果就是 No,222,444
四季。。。其实还可以写一个case12,1,2,然后最后default, default还是要写的,你知道的,有些开发人员,到了上线那一天了,前端还是狗屁都不判断,传到后台来最后导致switch失败,如果没有default的话,很难定位问题到底出在哪。。。。
![9e84679c478e77e1ea79aea884205dd8.png](https://i-blog.csdnimg.cn/blog_migrate/516d3c06b8c558f0fff8961befe7a598.jpeg)
Java的switch case还是挺好玩的,by the way,我刚开始用jdk1.6的时候,switch只支持byte,short,int,char,后来1.7是支持了string