尽量指定类、方法的final修饰符

Java编译器会寻找机会内联所有的final方法,内联对于提升Java运行效率作用重大,具体参见Java运行期优化。此举大概能够使性能平均提高50%。

尽量重用对象特别是String对象的使用,出现字符串连接时应该使用StringBuilder/StringBuffer代替。

尽可能使用局部变量

及时关闭流:进行数据库连接、I/O流操作,在使用完毕后,及时关闭以释放资源。

尽量减少对变量的重复计算:明确一个概念,对方法的调用,即使方法中只有一句语句,也是有消耗的,包括创建栈帧、调用方法时保护现场、调用方法完毕时恢复现场等。

尽量采用懒加载的策略,即在需要的时候才创建

慎用异常

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

不要在循环中使用try…catch…,应该把其放在最外层

如果能估计到待添加的内容长度,为底层以数组方式实现的集合、工具类指定初始长度

当复制大量数据时,使用System.arraycopy()命令

乘法和除法使用移位操作:移位操作虽然快,但是可能会使代码不太好理解,因此最好加上相应的注释。

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

基于效率和类型检查的考虑,应该尽可能使用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方法即对外提供的方法,如果给这些方法太多形参的话主要有两点坏处:

1、违反了面向对象的编程思想,Java讲求一切都是对象,太多的形参,和面向对象的编程思想并不契合

2、参数太多势必导致方法调用的出错概率增加

字符串变量和字符串常量equals的时候将字符串常量写在前面,可以避免空指针异常

请知道,在java中if (i == 1)和if (1 == i)是没有区别的,但从阅读习惯上讲,建议使用前者

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

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

公用的集合类中不使用的数据一定要及时remove掉

把一个基本数据类型转为字符串,基本数据类型.toString()是最快的方式、String.valueOf(数据)次之、数据+””最慢

使用最有效率的方式去遍历Map

对资源的close()建议分开操作

java 怎么从性能上优化代码_月薪上万做好这一步:程序员职场中必须掌握的的Java代码性能优化技巧...相关推荐

  1. 《Java程序员职场全攻略:从小工到专家》连载十二:大家都是个什么身价

    大家都是个什么身价 根治这种症状的第一步,就是让其彻底看清大家到底都是什么样的身价.不过这服药可不好熬出来,薪水这个问题,从哪个角度讲可能都不一样.横向可以分为不同学历.不同技术.不同公司.不同职位. ...

  2. Java程序员职场全功略 从小工到专家 连载三 IT语言平台

    分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! IT语言 ...

  3. Java程序员职场全功略 从小工到专家 连载四 IT人不容易

    分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! 你说我容 ...

  4. python爱心代码_「含蓄优雅表白神器」程序员式用python代码画爱心(附详细教程)...

    还能用python代码画爱心?还有这种操作?这是什么原理? 不相信python代码可以画爱心?先来一张效果图来看看效果吧! 用python代码画爱心的思路是怎样的? 1.怎么画心形曲线 2.怎么填满心 ...

  5. HTML5七夕情人节表白网页_浪漫星空-爱心相册_ HTML+CSS+JS 求婚 html生日快乐祝福代码网页 520情人节告白代码 程序员表白源码 3D旋转相册 js烟花代码 css爱心表白

    HTML5七夕情人节表白网页❤浪漫星空-爱心相册❤ HTML+CSS+JS 求婚 html生日快乐祝福代码网页 520情人节告白代码 程序员表白源码 3D旋转相册 js烟花代码 css爱心表白 这是程 ...

  6. java玫瑰花代码_js html5渲染的3D玫瑰花(程序员的情人节礼物)

    [javascript]代码库 js html5渲染的3D玫瑰花(程序员的情人节礼物) var b = document.body; var c = document.getElementsByTag ...

  7. 用php写一个可以抽取随机数的工具一次只抽四个怎么实现?_面试了一个32岁的程序员,场面一度很尴尬。...

    招人背景 首先说一下朋友的公司招人背景,公司招聘PHP高级岗位,负责公司的B2B项目研发.并发问题的处理和解决.领导给了他两个要求:(接下来的讲述我会以朋友的第一人称来进行) (1)技术比较好 (2) ...

  8. 程序员的你,有哪些炫技的代码写法?

    很高兴参加这次分享活动,以下是我对程序员炫技代码写法的一些见解和经验分享: 一.代码美感-灵动转换 美感是良好的编码风格的核心,代码美感平衡了可读性和编写效率,让我们的代码具有更好的可理解和可维护性. ...

  9. 从TdEngine20行代码引发的风波,看10倍程序员与普通程序员的差距

    上周笔者的一篇博客这位创造Github冠军项目的老男人,堪称10倍程序员本尊对于TdEngine的建立过程及其创始人陶建辉老师进行了介绍,并对于TdEngine团队在github上开源的一段consu ...

最新文章

  1. java+实现集合并运算_JAVA程序设计报告+集合运算
  2. 深度学习分布式策略优化、显存优化、通信优化、编译优化综述
  3. 阿里达摩院自主研发AI芯片 布局“中国芯”
  4. SAP Spartacus user role页面的checkbox设计明细介绍
  5. SAP Spartacus批量读取产品的逻辑
  6. 升讯威微信营销系统开发实践:(2)功能设计与架构设计
  7. [react] 你有用过React.Fragment吗?说说它有什么用途?
  8. RabbitMQ事务和Confirm发送方消息确认——深入解读
  9. 荣耀总裁赵明:如果开机很快 也就没有必要给消费者看任何广告了
  10. java正则出现次数_正则表达式(二)—匹配次数的正则
  11. DimDate populate data
  12. 雷达的工作原理示意图_平板吊袋离心机工作原理及结构示意图
  13. Java多线程-马士兵高并发视频教程笔记
  14. 最新Web前端经典面试试题及答案-史上最全前端面试题(含答案)
  15. 只需三步!查看笔记本电脑连接的WiFi密码
  16. elasticsearch 英文数字组合字符串模糊检索
  17. 虹软视觉人工智能开放平台创享会圆满落幕,干货满满频获点赞
  18. tenacity库 重试代码
  19. 远程桌面 你的凭据不工作 系统管理员不允许使用保存的凭据登录远程计算机
  20. QQ小程序百度网盘中的文件保存和下载

热门文章

  1. java 方法重载的作业_java第六章 方法及方法重载 课堂笔记、作业
  2. 达梦数据库导入oracle数据_达梦数据库助力加速石油石化行业数字化转型升级
  3. jeecg框架alert消息样式
  4. 图文详解mina框架
  5. 文件服务器映驱动,映射驱动程序文件 - Windows drivers | Microsoft Docs
  6. 计算机mips是什么,在计算机术语中,什么叫MIPS
  7. Gensee移动SDK之(二)协议
  8. Shiro————会话管理
  9. spring常见术语理解
  10. adpater里写toast_如何在Android中显示Toast?