黑马程序员技术交流社区

标题: 一系列if与switch的效率 [打印本页]

作者: HM马明宇    时间: 2013-3-11 14:35
标题: 一系列if与switch的效率
本帖最后由 光明宇宙 于 2013-3-11 22:27 编辑
  1. package com.itheima;

  2. import java.io.InputStream;
  3. import java.util.Scanner;

  4. public class Test {

  5.         public static void main(String[] args) {

  6.                 System.out.println("请输入星期数:");
  7.                 int num = 0;
  8.                 Scanner in = new Scanner(System.in);
  9.                 num = in.nextInt();
  10.                 if(num==1){
  11.                         System.out.println("星期一");
  12.                 }
  13.                 if(num==2){
  14.                         System.out.println("星期二");
  15.                 }
  16.                 //为了简化代码,剩下的省略不写……               
  17.                 if(num>7 || num<1){
  18.                         System.out.println("请输入正确的星期数!");
  19.                 }
  20.                 switch (num) {                        
  21.                         case 1:
  22.                                 System.out.println("星期一");
  23.                                 break;
  24.                         case 2:
  25.                                 System.out.println("星期二");
  26.                                 break;
  27.                         //为了简化代码,剩下的省略不写……
  28.                         default:
  29.                                 System.out.println("请输入正确的星期数!");                        
  30.                 }

  31.         }
  32. }
复制代码
代码如上,为了简化问题,部分判断省略了。
如果我输入的数字是2,即要走多个if的时候,跟switch的效率相比,有什么不同?

作者: 张宁    时间: 2013-3-11 14:44
如果你的顺序都是1-7,而且你也加了break了,所以效率是一样的。都是先判断,不符合条件就跳过。
作者: scott0610    时间: 2013-3-11 14:46
switch和if-else相比,由于使用了Binary Tree算法,绝大部分情况下switch会快一点,除非是if-else的第一个条件就为true.
只是在实际开发中  没有人会去用很多很多else if的
都是用 switch case 的  后者比较清晰  给人感觉就是一个脑子很清楚的人写出来的东西 。
switch要比if-else要快一点。
switch也有弊端啊,他没有if-else灵活,switch的表达中只能是byte ,short ,int,char,枚举。
if-else的表达式中可以使用逻辑运算符等
作者: HM李帅    时间: 2013-3-11 14:47
效率方面大同小异 基本相同
只是if比switch用起来要灵活一点
最明显的例子就是if可以判断字符串  而switch不可以
作者: 丁一    时间: 2013-3-11 14:53
switch语句更清晰吧  如果判断项多 就应该用switch  
if语句更灵活点
作者: HM马明宇    时间: 2013-3-11 14:56
袁见 发表于 2013-3-11 14:46
switch和if-else相比,由于使用了Binary Tree算法,绝大部分情况下switch会快一点,除非是if-else的第一个 ...

jdk1.7不就可以用String做参数了么?
作者: HM马明宇    时间: 2013-3-11 14:56
HM李帅 发表于 2013-3-11 14:47
效率方面大同小异 基本相同
只是if比switch用起来要灵活一点
最明显的例子就是if可以判断字符串  而switch ...

jdk1.7就可以了!
作者: 张文星    时间: 2013-3-11 15:13
判断比较多的时候推荐使用switch,这样代码看起来清晰些,可读性也更强。
作者: HM马明宇    时间: 2013-3-11 15:15
有没有办法看switch方法里的内容?api里没找到啊?




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