switch和if else的区别和应用

序编码中的两种分支结构:switch和if else
对于初学者而言对这两种分支结构可能不知道在什么情况下用什么样的分支结构
那么我现在就来讨论一下在何种情况下选择何种分支结构。
对于switch,一般适用于等值比较

switch(x){
case 值:
//语句
break; //optional

case 值:
//语句
break; //optional
可以有很多case语句

default: //可选
//语句
}

case值是在和x做一个等值比较,switch是不能做范围比较(也就是大小于比较)的,在某些情况下,switch也是可以转换成做范围比较的,比如在输入成绩判断等级的时候,比如:
score>=90 A
score>=80 B
score>=70 C
score>=60 D
score<60 E

可能有些同学要问了,在这样的情况下,如何去做一个等值比较在case语句中来判断成绩等级。
对于这种情况,我们可以做一个取整运算来作比较,如:
score/10=9 A
score/10=8 B
score/10=7 C
score/10=6 D
default E

这样就可以把范围比较转换为等值比较了,但是大家注意了,switch语句的值只支持32位或者更小的整数值,也就是说只能是 byte,short,int,char类型,在JDK7.0以后,变量可以是String类型。

对于if else而言可以做范围比较和布尔比较,数值的范围比较大家都知道,那么对于字符串的比较又该怎么做?
那么javaAPI里提供了一个 equals() 的方法这个方法用于字符串的等值比较,返回值是String类型,这个方法是区分大小写的,那么还有一个 equalsIgnoreCase() 的方法,这个方法和 equals() 方法的功能是一样的,只不过在这个方法里面对于做比较的两个String是不区分大小写的,如:
String str=XXXX;
String str1=CCCC;
if(str.equals(str1))或者也可以 if(str.equals("CCCC"))
那么java API还提供了一个做类型比较的方法:instanceof
这个方法用于判断所比较的对象是否属于特定的数据类型,如:
if(str intanceof String)
返回值是布尔类型

原文地址:https://www.cnblogs.com/CodeMeteor/p/3651143.html