假设我有两个字符串可以作为参数传递:
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
}
}
答案 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条件是无用的,并且在您的情况下无关。 (额外条件检查==>效率较低)