`
mo默羽
  • 浏览: 23573 次
社区版块
存档分类
最新评论

Java代码优化,有哪些常用方法?

    博客分类:
  • Java
阅读更多

  Java代码优化是Java编程开发很重要的一个步骤,Java代码优化要注重细节优化,一个两个的细节的优化,产生的效果不大,但是如果处处都能注意代码优化,对代码减少体积、提高代码运行效率是有巨大帮助的,还能在一定程度上避免未知错误,常用的Java代码优化细节如下:

  1. 为类、方法指定final修饰符

  为类指定final修饰符可以让类不可以被继承,为方法指定final修饰符可以让方法不可以被重写,如果指定了一个类为final,则该类所有的方法都是final的,Java编译器会寻找机会内联所有的final方法,内联对于提升Java运行效率作用重大,能够使性能平均提高50%。

  2. 尽量重用对象

  由于Java虚拟机不仅要花时间生成对象,还需要花时间对这些对象进行垃圾回收和处理,因此,生成过多的对象将会给程序的性能带来很大的影响。

  3. 尽可能使用局部变量

  调用方法时传递的参数以及在调用中创建的临时变量都保存在栈中,速度较快,其他变量都在堆中创建,速度较慢,且栈中创建的变量,随着方法的运行结束,内容就没了,不要额外的垃圾回收。

  4. 及时关闭流

  Java编程过程中,进行数据库连接、I/O流操作时务必小心,在使用完毕后,及时关闭以释放资源,因为对这些大对象的操作会造成系统大的开销,稍有不慎,将会导致严重的后果。

  5. 尽量减少对变量的重复计算

  在方法调用中,即使方法只有一句语句,也是有消耗的,因此,在进行方法调用时尽可以减少对变量的重复定义和引用。

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

  7. 慎用异常

  异常对性能不利,因为只要有异常被抛出,Java虚拟机就必须调整调用堆栈,异常只能用于错误处理,不应该用来控制程序流程。

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

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

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

  11. 乘法和除法使用移位操作

  用移位操作可以极大地提高性能,因为在计算机底层,对位的操作是最方便、最快的。

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

  13. 基于效率和类型检查的考虑,应该尽可能使用array,无法确定数组大小时才使用ArrayList。

  14. 尽量使用HashMap、ArrayList、StringBuilder,除非线程安全需要,否则不推荐使用Hashtable、Vector、StringBuffer,后三者由于使用同步机制而导致了性能开销

  15. 不要将数组声明为public static final

  因为这毫无意义,这样只是定义了引用为static final,数组的内容还是可以随意改变的,将数组声明为public更是一个安全漏洞,这意味着这个数组可以被外部类所改变。

  16. 尽量在合适的场合使用单例

  在控制资源的使用、控制实例的产生以及控制数据的共享的场合下,可以使用单例以减轻加载的负担、缩短加载的时间以及提高加载的效率等。

  17. 尽量避免随意使用静态变量

  18. 及时清除不再需要的会话

  19. 实现RandomAccess接口的集合比如ArrayList,应当使用最普通的for循环而不是foreach循环来遍历

  20. 使用同步代码块替代同步方法

  除非能确定一整个方法都需要进行同步,否则尽量使用同步代码块,避免对那些不需要进行同步的代码也进行了同步,影响代码执行效率。

  21. 将常量声明为static final,并以大写命名

  22. 不要创建一些不使用的对象,不要导入一些不使用的类

  23. 程序运行过程中避免使用反射

  反射具有强大的功能,但效率不高,不建议在程序运行过程中频繁使用反射机制,如果确实需要使用,建议将那些需要通过反射加载的类和项目启动的时候通过反射实例化一个对象并放入内存

  24. 使用数据库连接池和线程池

  这两个池都是用于重用对象的,前者可以避免频繁地打开和关闭连接,后者可以避免频繁地创建和销毁线程。

  25. 使用带缓冲的输入输出流进行IO操作

  26. 顺序插入和随机访问比较多的场景使用ArrayList,元素删除和中间插入比较多的场景使用LinkedList

  27. 不要让public方法中有太多的形参

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

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

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

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

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

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

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

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

  36. 对于ThreadLocal使用前或者使用后一定要先remove

  37. 切记以常量定义的方式替代魔鬼数字,魔鬼数字的存在将极大地降低代码可读性,字符串常量是否使用常量定义可以视情况而定

  38. long或者Long初始赋值时,使用大写的L而不是小写的l,因为字母l极易与数字1混淆,这个点非常细节,值得注意

  39. 所有重写的方法必须保留@Override注解

  40. 推荐使用JDK7中新引入的Objects工具类来进行对象的equals比较,直接a.equals(b),有空指针异常的风险

  41. 循环体内不要使用”+”进行字符串拼接,而直接使用StringBuilder不断append

  42. 不捕获Java类库中定义的继承自RuntimeException的运行时异常类

  43. 避免Random实例被多线程使用,虽然共享该实例是线程安全的,但会因竞争同一seed 导致的性能下降,JDK7之后,可以使用ThreadLocalRandom来获取随机数

  44. 静态类、单例类、工厂类将它们的构造函数置为private

 

  以上是常用的Java代码优化方法,在Java代码书写的时候要养成代码优化的习惯,就能够写出体积小、运行效率高、出错率低的代码!

分享到:
评论

相关推荐

    Java 性能优化实战 21 讲2021年

    │ 16 案例分析:常见 Java 代码优化法则.mp4 │ 17 高级进阶:JVM 如何完成垃圾回收?.mp4 │ 18 高级进阶:JIT 如何影响 JVM 的性能?.mp4 │ 20 SpringBoot 服务性能优化.mp4 │ 21 性能优化的过程方法与...

    java常用算法大全源代码.zip

    这个名为"java常用算法大全源代码.zip"的压缩包文件显然包含了丰富的Java算法实现,对于学习和提高编程技能非常有帮助。随书光盘的形式表明这可能是某本关于Java算法书籍的配套资源,而“全套”和“注释详细”的描述...

    统计源代码量源码(java编程)

    在Java编程领域,统计源代码量是一项常见的任务,它有助于开发者了解项目的规模,评估开发进度,以及进行代码质量分析。本程序就是一个专为此目的而设计的工具,它可以帮助我们快速统计出一个项目中的源代码行数。...

    JAVA代码+PPT+实例

    Java培训PPT实例通常包括了精心设计的幻灯片,详细介绍了Java的基础知识、关键概念、编程技巧以及常见问题的解决方法。这些PPT可能包含图文并茂的解释,使得学习过程更加生动有趣。 【详细内容】 根据描述,这个...

    《Java常用算法手册》源代码

    《Java常用算法手册》源代码是一份非常宝贵的资源,它为Java开发者提供了丰富的算法实现,是学习和实践算法的理想材料。这份源代码集合涵盖了多种经典和实用的算法,旨在帮助开发者提升编程技能,理解算法原理,并能...

    Java代码行计算工具

    Java代码行计算工具是一款专为Java开发者设计的实用软件,用于统计Java源代码中的代码行数、注释行数以及空白行数。这样的工具对于软件工程的代码质量管理、项目进度评估以及代码复杂度分析具有重要意义。 在软件...

    java代码质量控制

    Java代码质量控制是软件开发过程中不可或缺的一环,它关乎到代码的可读性、可维护性、性能以及潜在的bug预防。本篇将详细介绍几种常用的代码质量控制工具,包括它们的功能、用途以及如何使用。 首先,我们需要理解...

    Java常用数值算法集代码

    在这个"Java常用数值算法集代码"中,我们很显然会探讨一系列在Java编程中用于处理数值计算和算法实现的关键技术。这些算法通常包括但不限于数学计算、线性代数、统计分析、优化问题、图形图像处理以及科学计算等多个...

    大话java性能优化 周明耀 完整版

    《大话java性能优化》是周明耀先生的一本深入探讨Java性能调优的专业书籍,其主要内容涵盖了Java程序设计中的各种性能优化策略和技术。这本书旨在帮助开发者理解和掌握如何提升Java应用的运行效率,减少资源消耗,...

    Java性能优化实战视频全集

    **4.10 常见Java代码优化法则** - **代码层面**: 如减少循环中的计算开销、使用更高效的数据结构等。 - **设计层面**: 采用合适的设计模式,提高代码的可扩展性和可维护性。 #### 五、高级进阶篇 **5.1 JVM垃圾...

    java 代码自动生成

    Java代码自动生成是一种提高开发效率的方法,通过自动化工具或框架,可以快速地生成常见的DAO、Service、Bean、XML配置以及View和Controller等代码模块。在Java开发中,这些组件是构成一个完整应用的基础架构,手动...

    java代码行数统计工具

    针对Java编程语言,有一个专门用于统计代码行数的工具,它不仅适用于Java,还支持C++、Delphi和C#等其他编程语言。本文将详细介绍这个名为"IrisCodeCounter"的工具,以及如何利用它来有效地分析和管理代码库。 ...

    java api源代码

    Java API源代码是Java开发中的核心组成部分,它包含了Java标准库中的所有类和接口,这些类和接口构成了Java平台的基础。Sun Microsystems(后被Oracle收购)是Java的原始开发者,他们发布的源代码对于深入理解Java的...

    幸运抽奖java代码

    总之,“幸运抽奖java代码”项目涵盖了Java编程的多个核心概念,包括面向对象设计、数据库操作、并发编程、用户界面开发、异常处理、测试和性能优化。对于学习和实践Java编程的开发者来说,这是一个很好的实战案例。

    如何编写高质量Java代码

    这种分析方法有助于提前发现错误,减少后期调试成本。 - **工具选择**:常用的静态代码分析工具有FindBugs、PMD、Checkstyle等。其中,FindBugs是一款强大的工具,能够检测多种类型的代码问题。 - **集成开发环境**...

    地区码与地区名称相互转换java代码11.zip

    这个“地区码与地区名称相互转换java代码11.zip”文件很可能是提供了一个Java实现,用于解决此类问题。下面将详细讨论相关知识点。 1. 地区码(Area Code): 地区码通常指的是国家、省份、城市等地理区域的编码,...

    java常用代码,常用的如数据库连接等

    7. **设计模式**:在编写复杂的Java代码时,设计模式是一个重要的工具。例如,单例模式用于确保一个类只有一个实例,工厂模式用于创建对象,观察者模式用于对象间的通信。 以上只是Java编程中的一部分关键知识点,...

    Java全部源代码

    这对于优化代码性能、理解和解决遇到的问题,以及设计自己的库或框架都有极大的帮助。 首先,让我们聚焦于`java.lang`包,这是Java中最基础的包,包含了所有程序都依赖的基本类,如Object、String、Integer等。例如...

Global site tag (gtag.js) - Google Analytics