如果,否则如果,否则

时间:2013-12-16 15:17:23

标签: java

假设我有两个字符串可以作为参数传递:

String one = "one";
String two = "two";

以下哪种方法最有效?

private void exampleOne(String example){
     if(example.equals("one"){
         // do this
     }else{
         // do this
     }
}

private void exampleTwo(String example){
     if(example.equals("one"){
         //do this
     }else if(example.equals("two"){
         // do this
     }
}


private void exampleThree(String example){
     if(example.equals("one"){
         // do this
     }
     if(example.equals("two"){
         // do this
     }
}

10 个答案:

答案 0 :(得分:3)

从统计学上讲,使得字符串最少的字符串比较即可。

if (example.equals("one"){
    // do this
} else {
    // do this
}

答案 1 :(得分:2)

没有人是最有效的,因为你只有两个选项,你应该考虑值不是一个而不是两个,也许是另一个(空?null?)所以你应该写这样的东西:

 if(example.equals("one"){
     //do this 1
 }else if(example.equals("two"){
     // do this 2
 }else{
    // do this 3
 }

答案 2 :(得分:1)

第一个。因为您不必检查其他条件。在其他你做更多的操作。

效率最高:1,2,3。

但是,如果您必须检查i==0是否会!=,那么大多数人if (i != 0) {} else{}If (i==0) {...}更好地写{{1}}

让一切尽可能简单

答案 3 :(得分:1)

我会说第一个,因为它每次只需要评估一个表达式......

答案 4 :(得分:1)

在我看来第二个,因为您可以直接控制这两种情况。当Sring是“一个”和“两个”时。

在exampleOne中,该方法并不关心是否传递“two”或“three”。如果“一”通过,它只关心情况

答案 5 :(得分:0)

我先说,因为如果它只是在没有条件的情况下说其他话就不会检查任何东西,只需直接进入'其他'

答案 6 :(得分:0)

理论上,第一个是最有效的。 实际上,你应该选择第二个,因为它提供了更好的可读性和可维护性。

请记住,过早优化是所有邪恶的根源:)

答案 7 :(得分:0)

1)效率最高,但这对可维护性不利。

private void exampleOne(String example){
     if(example.equals("one"){
         // do this
     }else{
         // do this
     }
}

2)第二有效,但它有利于可维护性。

private void exampleTwo(String example){
     if(example.equals("one"){
         //do this
     }else if(example.equals("two"){
         // do this
     }
}

3)第三效率。

private void exampleThree(String example){
     if(example.equals("one"){
         // do this
     }
     if(example.equals("two"){
         // do this
     }
}

答案 8 :(得分:0)

我不知道你的需求是什么,所以你有mi意见,

第一个,将只进行一次检查..所以在那个特定的例子中,它将是那个比较少的人。

第二个ONE,最坏的情况是2个比较1个用于“一个”而1个用于“两个”但是......(总有一个但是)如果字符串是“3”则不会有任何工作(在第一个例子中,它将转到其他地方)

3示例将总是做2比较,而不是将你的回报放入ifs。

所以,我认为没有足够的信息可以说一个更优化。

一个问题:如果......使用像这样的案例,你可以尝试,而不是编写endles:

switch (true) {
        case example.equals("one"):  
                 break;
        case example.equals("two"):  
                 break;

        default: 
                 break;
}

答案 9 :(得分:0)

显然,与参数的可能值相比,第一种方法是最有效的方法,因为其他方法中的附加if条件是无用的,并且在您的情况下无关。 (额外条件检查==>效率较低)