尽可能使用局部变量
调用方法时传递的参数以及在调用中创建的临时变量都保存在栈中速度较快,其他变量,如静态变量、实例变量等,都在堆中创建,速度较慢。另外,栈中创建的变量,随着方法的运行结束,这些内容就没了,不需要额外的垃圾回收。
尽量减少对变量的重复计算
for (int i = 0; i < list.size(); i++){}
改为
int length = list.size();
for (int i = 0; i < list.size(); i++)
这样,在list.size()很大的时候,就减少了很多的消耗
变量在需要的时候才创建
String str = "aaa";
if (i == 1){
list.add(str);
}
//建议替换成
if (i == 1){
String str = "aaa"; list.add(str);
}
异常不应该用来控制程序流程
只要有异常抛出,jvm就会调用堆栈,影响效率
不要导入一些不使用的类
程序运行过程中避免使用反射
使用数据库连接池和线程池
这两个池都是用于重用对象的,前者可以避免频繁地打开和关闭连接,后者可以避免频繁地创建和销毁线程
不要手动调用System.gc();
使用Entry遍历Map
Map<String,String> map = new HashMap<>();
for (Map.Entry<String,String> entry : map.entrySet()) {
String key = entry.getKey();
String value = entry.getValue();
}
避免使用这种方式
Map<String,String> map = new HashMap<>();
for (String key : map.keySet()) {
String value = map.get(key);
}
因为使用keySet遍历时,当使用key值取得Map中的Value时,Map又遍历了一遍。而EntrySe时,由于EntrySet本身就是key-value结构,所以直接将Map的key-value给取出来了