优化JAVA程序的执行效率和性能

StringBuffer或者StringBuilder(线程不安全)来拼接或者操作

字符串就比直接使用String效率高。

避免在循环条件中使用复杂表达式

    在不做编译优化的情况下,在循环中,循环条件会被反复计算,如果不使用复杂表达式,而使循环条件值不变的话,程序将会运行的更快。

import java.util.Vector;
class CEL {
     void method (Vector vector) {
      /**   for (int i = 0; i < vector.size (); i++)   // Violation
       *      ; // ...
       **/
       int size=vector.size();
       for(int i=0;i<size;i++){
           //...
       }       
     }
}

为'Vector' 和 'Hashtable'定义初始大小

        JVM为Vector扩充大小的时候需要重新创建一个更大的数组,将原原先数组中的内容复制过来,最后,原先的数组再被回收。可见Vector容量的扩大是一个颇费时间的事。通常,默认的10个元素大小是不够的.你最好能准确的估计你所需要的最佳大小。

public Vector v = new Vector(20);  
public Hashtable hash = new Hashtable(10);

在finally块中关闭Stream

        程序中使用到的资源应当被释放,以避免资源泄漏。这最好在finally块中去做。不管程序执行的结果如何,finally块总是会执行的,以确保资源的正确关闭。

        在Java 7 中可以使用try-with-resource语句。

使用'System.arraycopy ()'代替通过来循环复制数组 

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];
         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);
     }
}

对于常量字符串,用'String' 代替 'StringBuffer'

        常量字符串并不需要动态改变长度。

在字符串相加的时候,使用 ' ' 代替 " ",如果该字符串只有一个字符的话

我摘呢一下我能够理解的,下面是我摘自的地址

http://www.dewen.org/q/2059/%E6%80%8E%E4%B9%88%E4%BC%98%E5%8C%96JAVA%E7%A8%8B%E5%BA%8F%E7%9A%84%E6%89%A7%E8%A1%8C%E6%95%88%E7%8E%87%E5%92%8C%E6%80%A7%E8%83%BD%EF%BC%9F


你可能感兴趣的:(小技巧,java优化)