代码优化,程序员必须懂得一门学问,简洁漂亮的代码给人的感受就像如沐清风,一堆垃圾的代码给人的感受就像吃了翔同样的难受。。因此不论是程序员仍是准程序员,养成良好的代码优化习惯都是必需要养成的java
月薪上万作好这一步:程序员职场中必须掌握的的Java代码性能优化技巧程序员
首先。咱们要搞清楚优化代码的目的数据库
减少代码的体积
提升代码运行的效率
月薪上万作好这一步:程序员职场中必须掌握的的Java代码性能优化技巧编程
代码优化具体细节(只说Java的,小编就是Java程序员)数组
尽可能指定类、方法的final修饰符
Java编译器会寻找机会内联全部的final方法,内联对于提高Java运行效率做用重大,具体参见Java运行期优化。此举大概可以使性能平均提升50%。
尽可能重用对象特别是String对象的使用,出现字符串链接时应该使用StringBuilder/StringBuffer代替。
尽量使用局部变量
及时关闭流:进行数据库链接、I/O流操做,在使用完毕后,及时关闭以释放资源。
尽可能减小对变量的重复计算:明确一个概念,对方法的调用,即便方法中只有一句语句,也是有消耗的,包括建立栈帧、调用方法时保护现场、调用方法完毕时恢复现场等。
尽可能采用懒加载的策略,即在须要的时候才建立
慎用异常
异常对性能不利。抛出异常首先要建立一个新的对象,Throwable接口的构造函数调用名为fillInStackTrace()的本地同步方法,fillInStackTrace()方法检查堆栈,收集调用跟踪信息。只要有异常被抛出,Java虚拟机就必须调整调用堆栈,由于在处理过程当中建立了一个新的对象。异常只能用于错误处理,不该该用来控制程序流程。
不要在循环中使用try…catch…,应该把其放在最外层
若是能估计到待添加的内容长度,为底层以数组方式实现的集合、工具类指定初始长度
当复制大量数据时,使用System.arraycopy()命令
乘法和除法使用移位操做:移位操做虽然快,可是可能会使代码不太好理解,所以最好加上相应的注释。
循环内不要不断建立对象引用(Java学习群632119504)
基于效率和类型检查的考虑,应该尽量使用array,没法肯定数组大小时才使用ArrayList
尽可能使用HashMap、ArrayList、StringBuilder,除非线程安全须要,不然不推荐使用Hashtable、Vector、StringBuffer,后三者因为使用同步机制而致使了性能开销
不要将数组声明为public static final
尽可能在合适的场合使用单例
使用单例能够减轻加载的负担、缩短加载的时间、提升加载的效率,但并非全部地方都适用于单例,简单来讲,单例主要适用于如下三个方面:
(1)控制资源的使用,经过线程同步来控制资源的并发访问
(2)控制实例的产生,以达到节约资源的目的
(3)控制数据的共享,在不创建直接关联的条件下,让多个不相关的进程或线程之间实现通讯
尽可能避免随意使用静态变量
要知道,当某个对象被定义为static的变量所引用,那么gc一般是不会回收这个对象所占有的堆内存的
及时清除再也不须要的会话
实现RandomAccess接口的集合好比ArrayList,应当使用最普通的for循环而不是foreach循环来遍历
使用同步代码块替代同步方法
将常量声明为static final,并以大写命名
这样在编译期间就能够把这些内容放入常量池中,避免运行期间计算生成常量的值。另外,将常量的名字以大写命名也能够方便区分出常量与变量
不要建立一些不使用的对象,不要导入一些不使用的类
程序运行过程当中避免使用反射
反射是Java提供给用户一个很强大的功能,功能强大每每意味着效率不高。不建议在程序运行过程当中使用尤为是频繁使用反射机制
使用数据库链接池和线程池
使用带缓冲的输入输出流进行IO操做,这能够极大地提高IO效率
顺序插入和随机访问比较多的场景使用ArrayList,元素删除和中间插入比较多的场景使用LinkedList
不要让public方法中有太多的形参
public方法即对外提供的方法,若是给这些方法太多形参的话主要有两点坏处:
一、违反了面向对象的编程思想,Java讲求一切都是对象,太多的形参,和面向对象的编程思想并不契合
二、参数太多势必致使方法调用的出错几率增长
字符串变量和字符串常量equals的时候将字符串常量写在前面,能够避免空指针异常
请知道,在java中if (i == 1)和if (1 == i)是没有区别的,但从阅读习惯上讲,建议使用前者
不要对数组使用toString()方法
不要对超出范围的基本数据类型作向下强制转型
公用的集合类中不使用的数据必定要及时remove掉
把一个基本数据类型转为字符串,基本数据类型.toString()是最快的方式、String.valueOf(数据)次之、数据+””最慢
使用最有效率的方式去遍历Map
对资源的close()建议分开操做
月薪上万作好这一步:程序员职场中必须掌握的的Java代码性能优化技巧安全
最后再给各位或是程序员或是准程序员们的一点建议了吧:若是你在学习Java的过程当中或者在工做中遇到什么问题均可以来群里提问,阿里Java高级大牛直播讲解知识点,分享知识,多年工做经验的梳理和总结,带着你们全面、科学地创建本身的技术体系和技术认知!能够加群找我要课堂连接 注意:是免费的 没有开发经验误入哦! 非喜勿入!
其实应该还有其余的Java代码优化小技巧,可是我可能尚未了解到,也没有总结的很好。
具体例子,我就不一一的贴上代码了,若是你们对这些方面感兴趣的话能够自行百度详细解决一下
若是有什么百度不出来的东西,能够来个人Java学习群632119504.能够随时来找我咨询,或者解决问题
学习就像逆水行舟,学习Java更是这样,毕竟Java已经雄踞编程语言排行第一已经十几年了,但正是这十几年,也使得Java各方面的体系也比其余语言更加完整和先进,有什么不懂的问题很容易就能到到解决
别让别人看见你的代码第一时间想到的是删了从写而不是代码优化,一位大佬亲口跟我说的
月薪上万作好这一步:程序员职场中必须掌握的的Java代码性能优化技巧性能优化