A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© HM马明宇 中级黑马   /  2013-3-11 14:35  /  2140 人查看  /  8 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 光明宇宙 于 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的效率相比,有什么不同?

评分

参与人数 1技术分 +1 收起 理由
贾文泽 + 1

查看全部评分

8 个回复

倒序浏览
如果你的顺序都是1-7,而且你也加了break了,所以效率是一样的。都是先判断,不符合条件就跳过。
回复 使用道具 举报
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的表达式中可以使用逻辑运算符等

评分

参与人数 1技术分 +1 收起 理由
贾文泽 + 1

查看全部评分

回复 使用道具 举报
效率方面大同小异 基本相同
只是if比switch用起来要灵活一点
最明显的例子就是if可以判断字符串  而switch不可以
回复 使用道具 举报
switch语句更清晰吧  如果判断项多 就应该用switch  
if语句更灵活点
回复 使用道具 举报
袁见 发表于 2013-3-11 14:46
switch和if-else相比,由于使用了Binary Tree算法,绝大部分情况下switch会快一点,除非是if-else的第一个 ...

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

jdk1.7就可以了!
回复 使用道具 举报
判断比较多的时候推荐使用switch,这样代码看起来清晰些,可读性也更强。
回复 使用道具 举报
有没有办法看switch方法里的内容?api里没找到啊?
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马