代码优化的目标:
减小代码体积
提高整个系统的运行效率
其实,我们主要是注意细节方面的优化.
1. 尽量指定类,方法的final修饰符
带有final修饰的类是不可派生的.在Java核心API中,有许多应用final的例子,例如java.lang.String,整个类都是final的,为类指定final修饰符可以让类不可以被继承,为方法指定final可以让方法不可以被重写.如果指定一个类为fianl,该类的所有方法都是final的.Java编译器会寻找机会内联所有的final方法,内联对于提升Java运行效率作用重大,具体参见Java运行期优化.此举能够提升性能平均50%.
2. 尽量重用对象
String 对象的使用,大家要注意出现字符串连接时应该使用StringBuilder/StringBuffer代替.因为 Java 虚拟机不仅要花时间生成对象,后期可能还需要花时间对这些对象进行垃圾回收和处理,所以,生成过多的对象将会给程序的性能带来很大的影响.
3.尽可能使用局部对象
调用方法的时候传递的参数以及在调用中创建的临时变量都保存在栈中速度较快.而其他变量,如静态变量、实例变量等,都在堆中创建,速度较慢. 并且,栈中创建的变量,随着方法的运行结束,自行消失,不需要你再做额外的垃圾回收.
4. 及时关闭流
Java编程过程中,进行数据库连接、I/O流操作时请小心,在使用完毕后,及时关闭以释放资源.因为对这些大对象的操作会造成系统大的开销,稍有不慎,将会导致严重的后果.
5. 尽量减少对变量的重复计算
先明确概念,对方法的调用,即使方法中只有一句语句,也是有消耗的,包括创建栈帧、调用方法时保护现场、调用方法完毕时恢复现场等.所以例如下面的操作:
for (int i = 0; i < list.size(); i++)
{...}
可替换为:for (int i = 0, int length = list.size(); i <
length; i++)
{...}
这样,在list.size()很大的时候,就会减少消耗
6 、尽量采用懒加载的策略,即在需要的时候才创建
例如:
String str = "aaa";if (i == 1)
{
list.add(str);
}
建议替换为:if (i == 1)
{String str = "aaa";
list.add(str);
}
7 、慎用异常
出现异常肯定对性能不理.那么我们首先要创建一个新的对象,Throwable 接口的构造函数调用名为 fillInStackTrace() 的本地同步方法, fillInStackTrace() 方法检查堆栈,收集调用跟踪信息.只要有异常被抛出, Java 虚拟机就开始调整调用堆栈,因为在处理过程中创建了一个新的对象.所以大家要知道,异常只能用于错误处理,不应该用来控制程序流程.
8 、不要在循环中使用 try…catch…
把其放在最外除非不得已.如果毫无理由地写了,那么只要你的领导有点技术、再加点强迫症,八成就要骂你为什么写出这种垃圾代码来了.
本篇文章是由济南达内为您呈现,希望给您带来更多更好的文章,喜欢的朋友们可以加微信公众号.
更多济南培训相关资讯,请扫描下方二维码