博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java优化
阅读量:7060 次
发布时间:2019-06-28

本文共 1401 字,大约阅读时间需要 4 分钟。

  hot3.png

1. 对于明确不需要派生的类,添加final修饰符,此时该类的所有方法都是final的。Java编译器会寻找机会内联(inline)所有的final方法。(能使性能提升50%)

2. 尽量重用对象,避免生成过多的对象。对于String的连接,用StringBuffer代替。
3. 尽量少用全局变量如static等(heap中创建,慢),多用局部变量(Stack中创建,快)。
4. 不要重复初始化变量。默认情况下,调用类的构造函数时, Java会把变量初始化成确定的值:所有的对象被设置成null,整数变量(byte、short、int、long)设置成0,float和 double变量设置成0.0,逻辑值设置成false。当一个类从另一个类派生时,这一点尤其应该注意,因为用new关键词创建一个对象时,构造函数链中的所有构造函数都会被自动调用。即

class test{private Object obj; //不需要写成 private Object obj=null;}
例如:for(int i=0; i
< len; i++)

10. 需要时才创建变量或者对象。

例如:

String str=”hello”;if(i==1){list.add(str);}应替换为if(i==1){String str=”hello”;list.add(str);}

复制代码

11. 慎用异常

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

12. 不要在循环中使用Try/Catch语句,若需要,应该放在最外层。

13. 若一个类实现了Cloneable,调用clone()方法创建类的实例。因为用new创建时,构造函数链中的所有构造函数都会被自动调用。

14. 乘法和除法

复制代码

考虑下面的代码:

for (val = 0; val < 100000; val +=5) { alterX = val * 8; myResult = val * 2; }

用移位操作替代乘法操作可以极大地提高性能。下面是修改后的代 码:

for (val = 0; val < 100000; val += 5) { alterX = val << 3; myResult = val << 1; }

复制代码

  修改后的代码不再做乘以8的操作,而是改用等价的左移3位操作,每左移1位相当于乘以2。相应地,右移1位操作相当于除以2。值得一提的是,虽然移位操作速度快,但可能使代码比较难于理解,所以最好加上一些注释。

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

16. 知道长度的情况下尽量使用定长数组array。
17. 当复制大量数据时,使用System.arraycopy()命令。

转载于:https://my.oschina.net/vieky/blog/351840

你可能感兴趣的文章
财务管理后台(前台页面)
查看>>
解决hash冲突的4种方法
查看>>
Kafka简介及安装配置
查看>>
Redis——HyperLogLog
查看>>
市场分享竞品分析
查看>>
科技兴国园区兴城——2019国际高科技产业园区博览会在深盛装开幕
查看>>
bash的字符处理工具及bash特性
查看>>
Input Director 一套键盘鼠标同时控制多台电脑
查看>>
Failure [INSTALL_FAILED_INVALID_APK]
查看>>
java 写入文件
查看>>
为什么你不能在 MySQL 3.x 版本上安装 Joomla 1.5.23
查看>>
文件管理相关命令
查看>>
Guava库学习:学习使用Strings和Charsets类
查看>>
学习strings、strconv包
查看>>
如何在Sharepoint Online中创建调查问卷
查看>>
Exchange 2013公网证书配置
查看>>
Java开发在线打开编辑保存Word文件
查看>>
将学习进行到底!为普通人的奋斗送福
查看>>
常用十大python机器学习库
查看>>
TCP/IP三次握手四次挥手
查看>>