01-Java程序优化----持续更新

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方法,源码的思路比较健壮,效率很高

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

 

 

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

 

9.集合数组的选择

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

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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值