有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java开关和if/else的哪种组合更快?为什么?

我有两组条件。一个有两个可能的值,另一个有更多(在这个例子中,我写了3个案例,但最多可能有8个)。哪种代码运行更快,错误提示更少(更准确)

代码a)

if (letter.equals(a)) {
  switch (number) {

    case 1:
           .........
    case 2:
           .........
    case 3:
           .........
  }
} else if (letter.equals(b)) {
  switch (number) {

    case 1:
           .........
    case 2:
           .........
    case 3:
           .........
  }
}

代码b)

switch (number) {

    case 1:

           if (letter.equals(a)) {
              .........
           } else if (letter.equals(b)) {
              .........
           }

    case 2:

           if (letter.equals(a)) {
              .........
           } else if (letter.equals(b)) {
              .........
           }

    case 3:

           if (letter.equals(a)) {
              .........
           } else if (letter.equals(b)) {
              .........
           }
  }

请告诉我,如果你认为有比这两个更好的选择。(我还可以创建一个同时获取letternumber的参数,并使用它创建6个案例。)

提前谢谢


共 (1) 个答案

  1. # 1 楼答案

    Which code runs faster and is less error prompt (more accurate)?

    答:在这种情况下,性能不是问题。因为不管你怎么用这个,实际执行的数字都是一样的。但是你可以提高代码的可读性,减少出错的可能性

    与其担心性能,不如从坚实的原则开始。你为什么不把这个大方法分解成一些小方法,它们有具体的责任。它将使代码更漂亮,更不容易出错。例如:

    方法:

    void processA(int number){
    switch (number) {
    
        case 1:
               .........
        case 2:
               .........
        case 3:
               .........
      }
    }
    
    void processB(int number){
        
      switch (number) {
    
        case 1:
               .........
        case 2:
               .........
        case 3:
               .........
      }
    }
    
    ///
    now from the main method you could simply call:
    
    
    if (letter.equals(a)) {
       // call the method which will process A
       processA(number);
    } else if (letter.equals(b)) {
       // call the method which will process A
       processB(number);
    }