1.   尽量指定类的final修饰符

带有final修饰符的类是不可派生的。指定一个类为final,则该类所有方法都是final。Java编译器会会找机会内联所有否final方法,这样能够使性能平均提高50%.

2.尽量重用对象。

特别是String对象的使用中,出现字符串链接情况时应用StringBuffer代替。

3.尽量使用局部变量。

调用方法时传递的参数以及在调用中创建的临时变量都保存在栈中,速度较快。其他变量买入静态变量、实例变量等,都在堆中创建,速度较慢。另外,依赖于具体的编译器/jvm,局部便利还可能得到进一步的优化。

4.不要重复初始化变量。

5.在进行数据库连接,I/O流操作是,记住务必在使用完后关闭连接,释放资源。

因为这些大对象的操作会造成系统大的开销。

6.在使用同步机制时,应尽量使用方法同步代替代码块同步。

7.慎用异常,

异常对性能不利。抛出异常首先要创建一个新的对象。Throwable接口的构造函数调用名为fillInStackTrace的本地方法,fillInStackTrace()方法检查堆栈,手机调用跟踪信息。只要有异常被抛出,VM就必须调用对堆栈,因为在处理过程中创建了一个新的对象。异常只能用于错误处理,不应该用来控制程序流程。

8.尽量不要在循环中使用try{}catch{}

可以在循环外部使用try,,catch包裹。

9.在StringBuffer时,应初始化StringBuffer的容量。这样可以明显提升性能。

10.当复制大龄数据时,使用System.arraycopy()

11.不用new关键词创建类的实例。

用new关键字创建类 的实例时,构造函数链中的所有构造函数都会别自动调用。按如果一个对象实现了Cloneable接口,我们就可以用它的clone方法,clone方法不会调用任何类的构造函数。

12.在进行乘法和除法,使用位移操作符会大大提升性能。

13.尽量使用HashMap和ArrayList,除非必要,否则不推荐使用HashTable和Vetor,后者由于使用同步机制,进而导致了性能的开销。

14.在遍历Map时,尽量使用entry遍历map,不要使用keyset()方式

15.尽量使用基本数据类型而不是包装类型。

16.急事消除过期对象的引用,放置内存泄露。

17.尽量少使用反射,如果使用反射,第一次使用反射,然后加入缓存。

18.尽量使用连接池,线程池,对象池、缓存等。

19.使用日志过程中参数拼接使用占位符

log.info("o:"+o)//不推荐

log.info("o:{}",o)//推荐

20.循环内不要不断创建对象引用

21.不要对数组使用toString()方法

22.不要对超出范围的基本数据类型做向下强制转型

23.把一个基本数据类型转微字符串,基本数据类型.toString()最快,valueOf次之,数据+""最慢

24.字符串变量和字符串常量equals的时候江字符串常量写在前面

25.不哟啊江数组声明微public static final

26.初始化集合,尽量制定大小

集合每次扩容的瑞安复杂度很有可能时O(n),所以尽量制定已知的集合大小,能减少集合的扩容次数

27.频繁使用Collection.contains方法,使用Set代替

28.公有静态变量应该通过类方位。

29.禁止使用构造方法BigDecimal(double),这样会存在精度损失风险,应该使用BigDecimal.valueOf(double)

30.枚举的属性字段必须时私有不可变

最新文章

  1. c++ 接口和抽象类
  2. Informatica相同环境与不同环境的导入导出( Repository Name,Integration Service Name,Folder Name是否相同):
  3. MS-SQL SERVER单列合并的四种常用方法
  4. 村村通(codevs 2627)
  5. python  代码片段
  6. Ubuntu12.04安装中文字体(转)
  7. FusionCharts 相关知识
  8. IOS各类问题
  9. zend framework安装中出现的问题与总结
  10. jsmart 前结合案例
  11. ftk学习记录(button一片)
  12. javascript 学习总结(一)
  13. 杭电1002 Etaoin Shrdlu
  14. Java 8——Optional
  15. Go Deeper HDU - 3715(2 - sat 水题 妈的 智障)
  16. 用Socket来简单实现IIS服务器
  17. IOS 设备备份文件详解 (二)
  18. win10 .net framework 3.5无法安装错误代码0x800F081F
  19. (转)AWK函数
  20. 设置PyCharm中的Python代码模版

热门文章

  1. Zero down time upgrade with OGG -from 11g to 12c.
  2. 一图胜千言elasticsearch(lucene)的内存管理
  3. HashMap在JDK7和JDK8中的区别
  4. 实验三:在eNSP上进行Hybrid链路类型端口实验
  5. 优雅写Java之一(常见编程技巧)
  6. Python 判断小数的函数
  7. centos7下oracle11g详细的安装与建表操作
  8. mvc jQuery 点击按钮实现导出Excel功能 参数长短不限
  9. 线程池之 Executors
  10. springboot之整合基本的jdbc并操作Mysql数据库