前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Java中可以提升性能的小细节

Java中可以提升性能的小细节

作者头像
Java学习录
发布2019-07-30 11:23:13
3580
发布2019-07-30 11:23:13
举报
文章被收录于专栏:Java学习录

避免对boolean类型的判定

反例:

代码语言:javascript
复制
if("a".equles("a")==true)`{
}

正例:

代码语言:javascript
复制
if(Objects.equles("a","a"))`{
}
代码语言:javascript
复制

多用条件判断符

反例:

代码语言:javascript
复制
if(a<0)`{
    return 0;
}else{
    return 1;
 }

正例:

代码语言:javascript
复制
代码语言:javascript
复制
a<0?0:1;
代码语言:javascript
复制
避免使用instanceof、避免把子类向父类转型掌握好多态即可

建议多使用局部变量 局部变量保存在栈中,占用的内存随着方法的执行完毕而被释放

多使用位运算代替算术运算 就是可读性差点

一维数组和二维数组的恩怨情仇 保存同样的数据使用一维数组和二维数组的区别是前者以时间换空间后者是以空间换时间

不要经常使用取反操作符

反例:

代码语言:javascript
复制
if(!a<0)`{
    return 0;
}else{
    return 1;
 }

正例:

代码语言:javascript
复制
if(a>=0)`{
    return 0;
}else{
    return 1;
 }
代码语言:javascript
复制

快速操作一个超大List的连续性数据

使用集合的List<E> subList(int fromIndex,int toIndex)方法可以返回一个超大List的一段连续性数据,此时对这个subList的所有操作比如clear()等操作都会影响到原List

当一个方法的返回值是List的时候请返回一个size为0的list而不是null从而避免空指针异常

单个字符串连接时使用单引号代替双引号 反例:

代码语言:javascript
复制
"abc"+"d";

正例:

代码语言:javascript
复制
"abc"+'d';

大量字符串拼接时使用StringBuffer代替+

切割字符串的时候使用StringTokenizer代替split

提前计算出需要循环的次数 反例:

代码语言:javascript
复制
for(int i=0i<a.size();;i++){
}

正例:

代码语言:javascript
复制
for(int i=0,n=a.size();i<n;i++){
}

减少不必要的需要循环的次数 反例:

代码语言:javascript
复制
int index=-1;
for(int i=0,n=a.size();i<n;i++){
    if(a.get(i)==3){
        index=i;
    }
}

正例:

代码语言:javascript
复制
int index=-1;
for(int i=0,n=a.size();i<n;i++){
    if(a.get(i)==3){
        index=i;
        break;
    }
}

不要在循环中改变数组/List的大小

使用System.arrayCopy进行复制数组

使用Buffer进行IO操作

释放资源的代码要放在finally代码块中

多用java.util.Obects工具类

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-07-25,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Java学习录 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档