1.尽量使用指定类,方法的final修饰符
带有final修饰符的类是不可派生的.如果指定一个类是final,则该类所有方法都是final的,Java编译器会寻找机会内联所有的final方法,此举能使性能平均提高50%.
2.尽量重用对象.
特别是String对象,出现字符串连接时应使用StirngBuilder/StringBuffer.
3.尽可能使用局部变量
应为它是在栈中创建,比较快.其他的变量是在堆中,比较慢.
4.及时关闭流
5.尽量减少对变量的重复计算
6.尽量采用懒加载,即在需要的时候才创建.
7.慎用异常
只要异常被抛出,Java虚拟机就必须调整调用堆栈,因为在处理过程中创建了一个新的对象.异常只能用于错误处理,不能用于程序控制流程
8.不要在循环中使用try...catch,
9.如果能估计添加的长度,为底层以数组实现的集合使用初始长度
10.当复制大量数据时,使用System.arraycopy()命令
11.乘法和除法使用移位操作
12.循环类不要不断创建对象引用
13.基于效率和类型检查的考虑,尽可能使用array,不确定大小时用arraylist
14.在需要线程安全的地方再使用线程安全的集合
15.不要将数组声明为public static final,无意义
16.尽量在合适的场合使用单列
17.尽量避免使用static
gc通常不会回收它
18.实现randomaccess接口的集合应使用for循环,不用foreach
因为是随机访问
19.同步代码块代替同步方法
20.将常量声明为static final
21.程序运行过程中最好不要用反射
22.多用线程池
23.最好用带缓冲的输入输出流
24.字符串变量和字符串常量equals的时候讲字符串常量写在前面.
25.不要对数组用toString()方法
26.公用的集合类中不使用的数据一定要及时remove掉
27.遍历map
HashMap<String, String> hm = new HashMap<>();
hm.put();
Set<Map.Entry<String, String>> entryMap = hm.entrySet();
Iterator<Map.Entry<String, String>> iter = entrySet.iterator();
while(iter.hasNext()){
Map.Entry<String, String> entry = iter.next();
}