您的位置:首页 > 编程语言 > Java开发

java常用的性能优化

2017-04-27 17:34 197 查看


java常用的性能优化技巧

1.  尽量使用StringBuilder
相比于Stringbuffer,StringBuilder没有采用同步机制,效率更高.
 
2.  避免在循环中使用复杂表达式
对于循环中的公共部分,尽量提出循环体。
如:
For(int i=0;i<s.length();i++){  }
应改成:
Int length= s.length();
For(int i=0;i< length;i++){  }
 
3.  尽量为集合设置初始大小
如果不设置初始大小,将采用默认大小,当集合达到最大值时,需要进行扩容,增大性能消耗。可以通过设置初始大小减少扩容。
 
4.  在finally块中关闭stream
程序中使用到的资源应当被释放,以避免资源泄漏。这最好在finally块中去做。不管程序执行的结果如何,finally块总是会执行的,以确保资源的正确关闭。
 
5.  使用'system.arraycopy ()'代替通过来循环复制数组
'system.arraycopy ()' 要比通过循环来复制数组快的多。
如: 
public class irb
{
    voidmethod () {
       int[] array1 = new int [100];
       for (int i = 0; i < array1.length; i++) {
           array1 [i] = i;
       }
       int[] array2 = new int [100];
       for (int i = 0; i < array2.length; i++) {
           array2 [i] = array1 [i];                // violation
       }
   }
}
更正: 
public class irb
{
   void method () {
       int[] array1 = new int [100];
       for (int i = 0; i < array1.length; i++) {
           array1 [i] = i;
       }
       int[] array2 = new int [100];
       system.arraycopy(array1, 0, array2, 0, 100);
   }
}
6.  查找单个字符的话,用charat()代替startswith() 
7.  在字符串相加的时候,使用 ' ' 代替 " ",如果该字符串只有一个字符的话 
8.  将try/catch块移出循环
9.对于boolean值,避免不必要的等式判断 
10.     使用条件操作符代替"if (cond) a = b; else a = c;" 结构
11.     不要在循环体中实例化变量
12.     尽可能的使用栈变量 
13.     不要总是使用取反操作符(!)
取反操作符(!)降低程序的可读性,所以不要总是使用
 
14.     采用在需要的时候才开始创建的策略。 
如:
String str="abc";
if(i==1){ list.add(str);}

应改为: 
if(i==1){String str="abc";list.add(str);}
15.     奇偶判断 
不要使用 i % 2 == 1 来判断是否是奇数,因为i为负奇数时不成立,请使用 i % 2 != 0 来判断是否是奇数,或使用 高效式 (i & 1) != 0来判断。 
16.     小数精确计算 
小数精确计算尽量采用BigDecimal,BigDecimal一定要用BigDecimal(String)构造器。而千万不要用 BigDecimal(double)来构造(也不能将float或double型转换成String再来使用BigDecimal(String)来构造,因为在将float或double转换成String时精度已丢失)。
另外,如果要比较两个浮点数的大小,要使用BigDecimal的compareTo方法。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: