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'
常量字符串并不需要动态改变长度。
在字符串相加的时候,使用 ' ' 代替 " ",如果该字符串只有一个字符的话
我摘呢一下我能够理解的,下面是我摘自的地址