java提升性能_提升java性能的基本方法

不要在循环条件中计算

如果在循环(如for循环、while循环)条件中计算,则没循环一边就会计算一次,这会降低系统效率。

int i=0,count=10;

//每次循环都要计算count*2

while (i

//do something

}

应该替换为:

//只计算一次

int total=count*2;

while (total>i) {

//do something

}

尽可能把变量、方法声明为final static 类型

假设要将阿拉伯数字转换成中文数字

public String toChineseNum(int num){

//中文数字

String[] cns = { "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖", "拾" };

return cns[num];

}

在这种情况下,把它声明成为一个类变量,并且加上final static 修饰会更加合适,在类加载后就会生成该数组,每次方法调用则不再重新生成数组对象了,这有助于提高系统性能。

//声明为类变量

final staticString[] cns = { "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖", "拾" };

public String toChineseNum(int num){

//中文数字

return cns[num];

}

缩小变量的作用于范围

关于变量,能定义在方法内的就定义在方法内,能定义在一个循环体内的就定义在循环体内,能放置在一个try……catch块内的就放置在该块内,其目的是加快GC的回收。

频繁字符串操作使用StringBuilder或StringBuffer

虽然String的连接操作(“+”号)已经做了很多优化,广州java培训班但在大量的追加操作上StringBuilder和StringBuffer还是比“+”号性能好很多

public void Strings(){

String str="Log file is ready ……";

for (int i = 0; i < 3; i++) {

//此处生成三个对象

str+="log"+i;

}

}

应该修改为:

public void stringBuilders(){

StringBuilder sb=new StringBuilder(20000);

sb.append("Log file is ready ……");

for (int i = 0; i < 3; i++) {

sb.append("Log "+i);

}

String log=sb.toString();

}

使用非线性检索

如果在ArrayList中存储了大量数据,使用indexOf查找元素会比java.utils.conllections.binarySearch的效率低很多,原因是binarySearch是二分搜索法,而indexOf使用的是逐个元素比对的方法。

需要注意的是:使用binarySearch搜索时,元素必须进行排序,否则准确性就不可靠了。

不建立冗余对象

不需要建立的对象就不能建立,说起来很容易,要完成遵循此规则难度就很大,我们经常就会无意地创建冗余对象,例如这样代码:

public void doSomething() throws myExecption{

//异常信息

String exceptionMsg="出错了!";

try {

Thread.sleep(10);

} catch (InterruptedException e) {

//转换自定义运行期异常

throw new myExecption(e,exceptionMsg);

}

}

很明显exceptionMsg 对象不应该声明这里,因为只有当抛异常了才会有这个变量的使用。放在这里只会占用内存上的使用空间,在catch块中定义exceptionMsg方法才是正道:需要的时候才能创建an对象。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值