本文由网上资料初步整理,仅供于学习交流,下班后再上传完整的优化笔记,如有侵权请尽快联系小编,如有不足,可发表评论,谢谢 资料下载
Howard 于 2018/6/22 10:24 修改
序号 | 优化点 | 细节 |
---|---|---|
1、 | try{}catch(){}使用 | 不要对于所有的异常捕获都使用Exception,最好是捕获对应的异常类型。异常捕获了就需要做相应的处理,而大多数人并未处理,更多的是打印一句e.printStackTrace(); 就了事了,这样做是不好的。 |
2、 | 减少使用new关键字创建对象 | |
3、 | 乘除法是否可以使用移位运算 | |
4、 | 注意循环的写法 | for(int i=0,j=list.size();i < j; i++) Map<String, Object> map; for (int i = 0, j = 1000000; i < j; i++) {map = new HashMap<String, Object>();// 不再每次都做声明了} |
5、 | 实现字符串拼接 | string = “abc” + ‘d’; |
6、 | 提升HashMap遍历效率 | 优: for (Entry<String, String[]> entry : paraMap.entrySet()) { values = entry.getValue(); //System.out.println(values[0]);} 劣: for(String appFieldDefId : appFieldDefIds) { values = paraMap.get(appFieldDefId); // System.out.println(values[0]);} |
7、 | 尽量使用局部变量 | |
8、 | 尽量实现对象重用 | |
9、 | 将闲置的资源进行释放 | |
10、 | ArrayList、Vector、LinkedList的使用 | |
11、 | synchronized的使用 | |
12、 | 三元表达式代替if else | |
13、 | StringTokenizer代替substring()和indexOf() | |
14、 | System.arraycopy()实现数组值的拷贝 | |
15、 | instanceof判断接口而不是接口的实现类 | |
16、 | 将类中不变的实例静态化 | |
17、 | 减少不必要的数据库查询操作 | |
18、 | 尽量指定类的final修饰符 | |
19、 | 仅查找单个字符用charAt()代替startsWith() | |
20、 | transient修饰字段规避序列化持久化操作 | |
21、 | 清理程序中多余的代码 | |
22、 | Session管理 | |
23、 | 使用单元测试代替main方法 | |
24、 | 对资源的close()建议分开操作 | 劣:try{ XXX.close(); YYY.close();} catch (Exception e){...} 优: try{ XXX.close(); }catch (Exception e) { ... } try{ YYY.close(); }catch (Exception e) { ... } |
25、 | 转字符串 | |
26、 | 公用的集合类中不使用的数据一定要及时remove掉 | |
27、 | 不要对超出范围的基本数据类型做向下强制转型 | |
28、 | 不要对数组使用toString()方法 | |
29、 | 请知道,在java中if (i == 1)和if (1 == i)是没有区别的,但从阅读习惯上讲,建议使用前者 | |
30、 | 字符串变量和字符串常量equals的时候将字符串常量写在前面 | |
31、 | 不要让public方法中有太多的形参 | |
32、 | 顺序插入和随机访问比较多的场景使用ArrayList,元素删除和中间插入比较多的场景使用LinkedList | |
33、 | 使用带缓冲的输入输出流进行IO操作 | |
34、 | 使用数据库连接池和线程池 | |
35、 | 程序运行过程中避免使用反射 | |
36、 | 不要创建一些不使用的对象,不要导入一些不使用的类 | |
37、 | 使用同步代码块替代同步方法 | |
38、 | 实现RandomAccess接口的集合比如ArrayList,应当使用最普通的for循环而不是foreach循环来遍历 | |
39、 | 尽量避免随意使用静态变量 | |
40、 | 尽量在合适的场合使用单例 | |
41、 | 不要将数组声明为public static final | |
42、 | 尽量使用HashMap、ArrayList、StringBuilder,除非线程安全需要,否则不推荐使用Hashtable、Vector、StringBuffer,后三者由于使用同步机制而导致了性能开销 | |
43、 | 基于效率和类型检查的考虑,应该尽可能使用array,无法确定数组大小时才使用ArrayList | |
44、 | 尽量采用懒加载的策略,即在需要的时候才创建 | 劣:String str = "aaa"; if (i == 1){ list.add(str); } 优: if (i == 1) {String str = "aaa"; list.add(str);} |
转载请标明出处:java代码优化笔记
文章来源: java代码优化笔记