提高java代码的效率
来源:互联网 发布:大乐透算法必中5红万能 编辑:程序博客网 时间:2024/04/30 12:21
一、避免在循环条件中使用复杂表达式
在不做编译优化的情况下,在循环中,循环条件会被反复计算,如果不使用复杂表达式,而使循环条件值不变的话,程序将会运行的更快。例子:
- importjava.util.Vector;
- classCEL {
-
-
// Violation -
-
- }
更正:
- classCEL_fixed {
-
-
-
-
-
- }
二、为'Vectors' 和 'Hashtables'定义初始大小
JVM为Vector扩充大小的时候需要重新创建一个更大的数组,将原原先数组中的内容复制过来,最后,原先的数组再被回收。可见Vector容量的扩大是一个颇费时间的事。
通常,默认的10个元素大小是不够的。你最好能准确的估计你所需要的最佳大小。例子:
- importjava.util.Vector;
- publicclassDIC {
-
-
-
-
v -
-
-
// no initialCapacity. - }
更正:
自己设定初始大小。
- publicVectorv = new Vector(20);
- publicHashtablehash = new Hashtable(10);
三、在finally块中关闭Stream
程序中使用到的资源应当被释放,以避免资源泄漏。这最好在finally块中去做。不管程序执行的结果如何,finally块总是会执行的,以确保资源的正确关闭。
四、使用'System.arraycopy ()'代替通过来循环复制数组,例子:
- publicclassIRB
- {
-
-
-
-
array1 -
-
-
-
array2 -
-
- }
更正:
- publicclassIRB
- {
-
-
-
-
array1 -
-
-
-
- }
五、让访问实例内变量的getter/setter方法变成”final”
简单的getter/setter方法应该被置成final,这会告诉编译器,这个方法不会被重载,所以,可以变成”inlined”,例子:
- classMAF {
-
-
_size -
-
- }
更正:
- classDAF_fixed {
-
-
_size -
-
- }
六、避免不需要的instanceof操作
如果左边的对象的静态类型等于右边的,instanceof表达式返回永远为true。
例子:
- publicclassUISO {
-
- }
- classDogextendsUISO {
-
-
-
-
-
UISO uiso -
-
-
- }
更正:
删掉不需要的instanceof操作。
- lang="as">
- class Dog extends UISO{
-
void method (){ -
Dog d; -
System.out.println ("Dog is anUISO"); -
System.out.println ("UISO is anUISO"); -
} - }
七、避免不需要的造型操作
所有的类都是直接或者间接继承自Object。同样,所有的子类也都隐含的“等于”其父类。那么,由子类造型至父类的操作就是不必要的了。例子:
- classUNC {
-
- }
- classDogextendsUNC {
-
-
-
UNC animal // not necessary. -
-
- }
更正:
- classDogextendsUNC {
-
-
-
UNC animal -
-
- }
八、对于常量字符串,用'String' 代替 'StringBuffer'
常量字符串并不需要动态改变长度。
例子:
- publicclassUSC {
-
-
-
-
-
- }
更正:
把StringBuffer换成String,如果确定这个String不会再变的话,这将会减少运行开销提高性能。
九、在字符串相加的时候,使用 ' ' 代替 " ",如果该字符串只有一个字符的话
例子:
- publicclassSTR {
-
-
// violation. -
-
- }
更正:
将一个字符的字符串替换成' '
- publicclassSTR {
-
-
-
-
- }
尽量别用异常
异常对性能不利。抛出异常首先要创建一个新的对象。Throwable接口的构造函数调用名为fillInStackTrace()的本地(Native)方法,fillInStackTrace()方法检查堆栈,收集调用跟踪信息。只要有异常被抛出,VM就必须调整调用堆栈,因为在处理过程中创建了一个新的对象。异常只能用于错误处理,不应该用来控制程序流程。
Try {} catch()要使用得当。
不要在循环中使用:
Try {
} catch() {
}
应把其放置在最外层。
尽量使用HashMap 和ArrayList ,除非必要,否则不推荐使用HashTable和Vector,后者由于使用同步机制,而导致了性能的开销。
- 提高java代码的效率
- 提高java代码执行效率
- 提高写代码的效率
- 提高写代码的效率
- 提高代码debug的效率
- 提高代码的运行效率
- 优雅java代码效率提高的习惯(一)
- 提高java代码运行效率(1)
- 提高java代码运行效率(2)
- 提高java代码运行效率(3)
- 提高java代码运行效率(4)
- 提高java代码运行效率(5)
- java技巧--提高代码运行效率
- java技巧--提高代码运行效率
- java技巧--提高代码运行效率
- java技巧--提高代码运行效率
- java技巧--提高代码运行效率
- 如何优化java代码,提高执行效率
- 动态生成的json与定义好的json如何拼接?
- 在Windows系统下使用GNU命令
- C语言基础
- 简历常见问题—手把手教你写简历
- java技巧--提高代码运行效率
- 提高java代码的效率
- 在CentOS下源码安装 Xen并搭建Windows虚拟机
- Eclipse快捷键大全(转载)
- jquery获取提交的值
- #姜小浩杰瑞实训记#7月21日作业汇…
- #姜小浩杰瑞实训记#7月22日作业汇…
- 【7.23】第四章数组知识重点#姜小…
- 【7.25】第六章 方法&n…
- Cocos2d-x3.2 多点触控