黑马程序员技术交流社区

标题: Java基础--if语句和switch语句比较 [打印本页]

作者: michael_wlq    时间: 2015-8-24 23:09
标题: Java基础--if语句和switch语句比较
本帖最后由 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型:

  1. /**
  2. * @author michael_wlq
  3. * 验证jdk1.7中的switch语句中的参数可以使用字符串类型
  4. */
  5. public class SwitchTest {
  6.         public static void main(String[] args) {
  7.                
  8.                 String str = "michael";
  9.                
  10.                 switch(str) {
  11.                         case "michael":
  12.                                 System.out.println("String类型可以用于switch语句!");
  13.                                 break;
  14.                         default:
  15.                                 System.out.println("String类型不可以用于switch语句!");
  16.                 }
  17.         }
  18. }
复制代码

//当参数为long类型是,编译器会报错(给出错误提示)


【注意】
即使JDK的版本为1.7,在myeclipse 也提示switch不能支持string,这是因为myeclipse支持的jdk版本目前还不到1.7,compiler level最高才到6,而换用Eclipse后即是没有问题的。






欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2