也许在好多人的眼中JAVA始终是低效的代名词,运用java写出的代码都是浪费内存的运行缓慢的,对java代码性能的优化也没有什么意义,也许 这就是那些常常沉迷于企业级开发,只看重业务逻辑看重什么高端的框架设计或是高度灵活的设计模式的同学们的片面看法吧,那么就让我为大家展示一些高效的变 成细节吧,这些细节也许对于JAVA EE 来说没有什么意义,但对于JAVA ME的开发来说意义也许是重大的。
1.使用速记Boolean条件
代码一:
if(boolean_expresion = true){
return true;
}else{
return false;
}
代码二:
return boolean_expresion;
很显然大家会认为代码二会比代码一效果好,那么为什么呢?因为代码二最终的编译结果会比代码一短
2.使类为final
如果类不会再被扩展那么把类标记为final将使编译器最终的编译结果效率更高。当然如果看过《Thinking in java》的朋友也许会注意到,现在的jdk版本已经做过优化final和非final的类效率已经差不了太多了,所以最终优化效果不会太明显。
3.尽量使用int
对于现阶段的大部分机器来说还都是32位处理器,然而一个long类型的数据类型来说将使用64位内存然而int则只需要32位,相同的数据如果使用int将比long速度快2-4倍
4.避免调用垃圾回收
System。gc()操作将调用很多的内存空间尤其是对于设备内存资源受限的设备来说更是毁灭性的;相信jvm的垃圾回收机制吧~~
5.对字符串使用静态变量
当定义String 类型的静态字段(也成类字段),可以用静态变量(非final)代替常量( final)加快程序速度。
private static final String x="storm";
对于这个静态常量(由final 关键字标识),你使用常量的每个时候都会创建一个临时的String 对象。在字节代码中,编译器去掉”x”,代替它的是字符串“example”,以致每次引用”x”时VM 都会进行一次哈希表查询
6.避免使用String的构造函数
避免使用java.lang.String(String)构造函数,因为它创建了一个没有必要的String对象,这个对象是作为参数提供的一个字符串的拷贝。因为String 对象创建后不可以修改,所以拷贝典型没有必要。
7.编写有效循环
代码一:
for(int count = 0; count < vector.size(); count++){
}
代码二:
int size = vector.size();
for(int count = 0; count <size; count++){
}
代码二为什么比代码一好你应该看得出来吧。
如果对遍历的顺序没有特殊要求向倒序也许更高效
for(int count = vector.size; count > 0; count--){
}
个人认为foreach更好用~~~~
8.优化除法操作
除法操作时缓慢的,如果可以的话尽量转换为右位移运算
9.使用instanceof进行转型
使用instanceof比trycache代码块效率更高
try{
(String)content.someoperation();
}cache(Exception e){
}
vs
if(content instanceof String){
(String)content.someoperation();
}else{
}
使用instanceof 比用try/catch 要快。当转型失败发生异常时才使用try/catch。
10.使用instanceof进行条件判断时不必进行null判断