日常工作中,大家会经常遇到条件判断的情况,
比如:
public static void testMathod(String param) {
if ("AAAA".equalsIgnoreCase(param)) {
// 其他业务逻辑
}
if ("BBBB".equalsIgnoreCase(param)) {
// 其他业务逻辑
}
if ("CCCCCC".equalsIgnoreCase(param)) {
// 其他业务逻辑
}
if ("DDDDDD".equalsIgnoreCase(param)) {
// 其他业务逻辑
}
}
代码咋一看 似乎没什么毛病,跑的问题不大;的确,在常规的情况下,区别不会太明显,但是如果统一方法多次请求的情况下,有个场景相比较if+else if 的组合更省时间:
public static void testMathod2(String param) {
if ("AAAA".equalsIgnoreCase(param)) {
// 其他业务逻辑
} else if ("BBBB".equalsIgnoreCase(param)) {
// 其他业务逻辑
} else if ("CCCCCC".equalsIgnoreCase(param)) {
// 其他业务逻辑
} else if ("DDDDDD".equalsIgnoreCase(param)) {
// 其他业务逻辑
}
}
相比较上面两个方法,测试代码如下:
public static void main(String[] args) {
Long start = System.currentTimeMillis();
for (int i = 0; i < 1000000; i++) {
testMathod("AAAA");
// testMathod2("AAAA");
}
System.out.println("takeTime:" + (System.currentTimeMillis() - start) + "ms");
}
分别执行 10W次 testMathod("AAAA") 和 testMathod2("AAAA"), 结果自己观察:
可以预见的是:在这个场景下,测试的结果,testMathod2 优于 testMathod 。这是因为,testMathod2 在首次判断第一个条件后,后续的else if 并不会在进行判断,从而更加节省时间;
感兴趣的宝子们可以自己测试下
因此,在同种逻辑条件下,相比较多次用if的组合,建议宝子们 用if+elseif的组合 更加择优!!!