1.使用逻辑运算符 “与” 或 “或” 时,尽量使用 && 或 ||

原因:&& 或者 || 具有短路效果。使用 && 时,如果第一个条件不满足,就不会再去判断第二个条件;使用 || 时,如果第一个条件满足,就不会再去判断第二个条件。&& 或者 || 节省了条件判断的时间。

 

2.选择有效率的条件判断语句 if...else 和 switch...case

  1. switch建议判断固定值的时候用,if建议判断区间或范围的时候用
  2. 当分支较多时,且case常量分布范围很小但实际有效值又比较多的情况,用switch的效率是很高的。因为switch是随机访问的,就是确定了选择值之后直接跳转到那个特定的分支,但是if...else是遍历所以得可能值,直到找到符合条件的分支。如此看来,switch的效率确实比ifelse要高的多。此时选择switch...case语句
  3. switch...case占用较多的代码空间,以空间换时间,因为它要生成跳表,特别是当case常量分布范围很大但实际有效值又比较少的情况,switch...case的空间利用率将变得很低。此时选择if...else语句
  4. switch...case只能处理case为常量的情况,对非常量的情况是无能为力的。例如 if (a > 1 && a < 100),是无法使用switch...case来处理的。所以,switch只能是在常量选择分支时比ifelse效率高,但是if...else能应用于更多的场合,if...else比较灵活。

 

3.选择有效率的循环语句

如果在循环结束后,不知道使不使用控制条件的那个变量,用for循环。因为变量及早的从内存中消失,可以提高内存的使用效率。

 

4.尽早结束循环

在数组或者集合遍历查找某个元素值或者对象时,如果查找到了尽早break或者return循环。尽早的结束循环,可以避免循环其他无用的数据而浪费时间,提高了程序的效率。

 

5.如果有字符串拼接,选择合适的字符串

字符串拼接的5种方式及效率

 

6.选择数组的查找方式

查找某个元素在数组中的位置(返回索引),如果数组有序,请使用二分查找法,这样查找的循环次数就会每次对半减少,推荐使用数组操作工具类Arrays。

 

7.多查看底层源码的写法,并模仿底层源码的写法

当然如果是掌握底层源码的写法,可以运用到项目中,对项目是很大的优化。

例如:Arrays的toString方法,源码的思路比较健壮,效率很高

java swich if 那个快 java switch ifelse效率_java swich if 那个快

Arrays的binarySearch方法也是如此,比如此处用了一个">>>"无符号右移,操作的是二进制数,速度很快

java swich if 那个快 java switch ifelse效率_条件判断_02

 

java swich if 那个快 java switch ifelse效率_字符串拼接_03

 

8.多使用操作二进制数的位运算符

java swich if 那个快 java switch ifelse效率_数组_04

 

9.集合数组的选择

  • 如果元素个数是固定的推荐使用数组
  • 如果元素个数是不固定的推荐使用集合

因为部分集合底层是数组实现的,首先会创建一个默认大小的数组,如果不够存储就会重新创建一个默认长度自增倍数的数组来存储,原数组就会变成垃圾,随着元素个数的增加,产生的数组垃圾就越多,浪费了内存。而数组只创建一个数组。所以如果元素个数固定,建议使用数组,元素个数不固定使用集合