本文由网上资料初步整理,仅供于学习交流,下班后再上传完整的优化笔记,如有侵权请尽快联系小编,如有不足,可发表评论,谢谢 资料下载
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代码优化笔记