有哪些优化java代码的方法呢?
下文笔者讲述优化java常见的方法分享,如下所示
6.尽量使用移位来代替'a/b'操作
选择合适的数据容器
多线程在未发生线程安全前提下 应尽量使用HashMap、Arraylist 由于HashTable、Vector 等使用同步机制,性能降低了
使用合适大小的HashMap
如果我们需使用一个较大的hashMap时 我们需提前使用构造函数 创建合适大小的HashMap public HashMap(int initialCapacity, float loadFactor); 创建合适大小,可避免Hash重构 扩容是一件很耗费性能的事 所以对比较大的HashMap,我们应尽可能避免多次构建HashMap
减少对变量的重复运算
如 for(int i=0;i<list.size();i++) 最佳写法 for(int i=0,len=list.size();i<len;i++)
4.减少不必要创建对象
如: A a = new A(); if(i==1){ list.add(a); } 应该改为 if(i==1){ A a = new A(); list.add(a); }
5.尽量在finally块中释放资源
程序中使用到的资源应当被释放 我们把释放代码编写在finally中,可得到有效的释放
6.尽量使用移位来代替'a/b'操作
"/"是一个代价很高的操作
使用移位的操作将会更快和更有效
如:
int num = a / 4;
int num = a / 8;
应该改为:
int num = a >> 2;
int num = a >> 3;
7.尽量使用移位来代替'a*b'的操作
如:
int num = a * 4;
int num = a * 8;
应该改为:
int num = a << 2;
int num = a << 3;
8.尽量确定StringBuffer的容量
StringBuffer 的构造器会创建一个默认大小(通常是16)的字符数组
在使用中
当超出这个大小,就会重新分配内存
创建一个更大的数组,并将原先的数组复制过来
再丢弃旧的数组
在大多数情况下,在创建StringBuffer的时候指定大小
可避免在容量不够的时候自动增长
使用此种方式可提高性能
如
StringBuffer buffer = new StringBuffer(1000);
9.尽量早释放无用对象的引用
方法局部引用变量所引用的对象会随着方法结束而变成垃圾
因此
大部分时候程序无需将局部,引用变量显式设为null。
例:
Public void test(){
Object obj = new Object();
……
Obj=null;
}
上面这个就没必要了,随着方法test()的执行完成
程序中obj引用变量的作用域就结束了。但是如果是改成下面:
Public void test(){
Object obj = new Object();
……
Obj=null;
//执行耗时,耗内存操作;或调用耗时,耗内存的方法
……
}
10.尽量避免使用二维数组
二维数据占用的内存空间
比一维数组多得多
大概10倍以上
版权声明
本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。