本帖最后由 michael_wlq 于 2015-8-24 23:11 编辑
if和switch语句类似,具体什么场景下,应用哪个语句呢?
首先,如果判断的具体数值不多,而是符合byte、short、int、char(包括这四种类型的包装类)、枚举、字符串(jdk1.7及以后版本)这几种类型。
虽然两个语句都可以使用,建议使用swtich语句,因为switch语句所有的判断情况都会一次性加载到内存中,而if语句会顺序加载,所以switch语句的执行效率更高。
其他情况:对区间判断,对结果为boolean类型判断,使用if语句,if的使用范围更广。
注意:
在JDK1.6的版本中,switch后面的括号里面只能放int类型的值,注意是只能放int类型,但是放byte,short,char类型的也可以,因为byte,short,char可以自动提升(自动类型转换)为int类型,而不能放long型和String型。
在JDK1.7的版本中,switch中可以使用字串String,但仍不支持long型:
- /**
- * @author michael_wlq
- * 验证jdk1.7中的switch语句中的参数可以使用字符串类型
- */
- public class SwitchTest {
- public static void main(String[] args) {
-
- String str = "michael";
-
- switch(str) {
- case "michael":
- System.out.println("String类型可以用于switch语句!");
- break;
- default:
- System.out.println("String类型不可以用于switch语句!");
- }
- }
- }
复制代码
//当参数为long类型是,编译器会报错(给出错误提示)
【注意】 即使JDK的版本为1.7,在myeclipse 也提示switch不能支持string,这是因为myeclipse支持的jdk版本目前还不到1.7,compiler level最高才到6,而换用Eclipse后即是没有问题的。
|