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对象。
java提升性能_提升java性能的基本方法相关推荐
- c 与java 反射性能_谈谈Java 反射的快慢
[相关学习推荐:java基础教程] 反射到底是好是坏 说到Java 中的反射,初学者在刚刚接触到反射的各种高级特性时,往往表示十分兴奋,甚至会在一些不需要使用反射的场景中强行使用反射来「炫技」.而经验 ...
- java 防止拷贝_[改善Java代码]避免对象的浅拷贝
建议43: 避免对象的浅拷贝 我们知道一个类实现了Cloneable接口就表示它具备了被拷贝的能力,如果再覆写clone()方法就会完全具备拷贝能力.拷贝是在内存中进行的,所以在性能方面比直接通过ne ...
- java 包命名_【Java】包的命名规则
命名规范 包:所有单词的字母小写,之后每个单词用-隔开,如 org.nemo.demo 常量:所有单词的字母大写,之后每个单词用_隔开,如 FLAG 类:所有单词的首字母大写,如 TestJava p ...
- java武功秘籍_请问java全套内容都有什么呢?
我整理的Java全套内容学习路线,分为6个阶段(大阶段)第一阶段:java内功心法篇 第二阶段:Java武功秘籍(经典框架) 第三阶段:Java高级功法(主流框架) 第四阶段:Java成神之路 第五阶 ...
- java catch 空指针异常_关于Java:捕获空指针异常
我想问的是有关Java的多数知识,但我想它适用于许多语言. 考虑, if(myVariable==null){ doSomethingAboutIt(); } else carryOn(myVaria ...
- java中同步_在Java中的方法同步和语句同步(块同步) - Break易站
Java 多线程 线程主要通过共享对字段的访问和参考字段引用的对象进行通信.这种通信形式非常有效,但可能出现两种错误:线程干扰和内存一致性错误.需要一些同步构造来防止这些错误.以下示例显示了我们需要同 ...
- java初学课程_作为java新手应该学习什么课程
照目前IT行业发展趋势,学java的人越来越多,因为java的应用范围广,薪资待遇在IT行业里也是名列前茅,那么,作为java新手应该学习什么课程呢?动力节点java学院的小编来告诉大家新手应该学哪些 ...
- java开发课程表_展示Java开发人员课程包
java开发课程表 60个小时以上的课程,5门所有级别的课程:成为Java编程专家 嘿,怪胎, 本周,在我们的JCG Deals商店中 ,我们提供了一个极端的报价 . 我们提供的Java Develo ...
- java 简化判断_简化Java内存分析
java 简化判断 作为一名典型的Java开发人员,除了遵循关闭连接,流等典型的最佳实践外,我从未监视过应用程序的内存使用情况.最近,我们在JBoss服务器中遇到了一些问题,不得不深入研究内存管理Ja ...
- java进度条_自学java你需要知道的,适合编程小白
1. java学习网站 之前在很多学习网站上学习过Java,踩过很多坑,今天给大家推荐一个比较好用的Java学习网站,希望大家能少踩坑 Java教程 | 项目实践一站式java学习 这个网站的针对性强 ...
最新文章
- 解决在onCreate()过程中获取View的width和Height为0的4种方法
- [洛谷P4721]【模板】分治 FFT
- SIGIR 2019 | 为什么你的毛衣显胖又显黑?这个算法给你答案
- Linux学习:shell 命令(用户管理)
- pheonix从入门到进阶
- CBO Cost Formulas基于成本优化器的成本计算公式大全
- Android系统为例解读智能手机如何防盗
- Esper事件处理引擎 EPL语法-模式匹配
- java 返回集合_java – List返回一个对象集合
- POJ1006 中国剩余定理
- 【CODEVS1191】数轴染色
- 在QQ浏览器打开html,QQ浏览器显示网页打开错误的处理
- Unity游戏热更新
- Python中参数前面的星号
- Only no-arg methods may be annotated with @Scheduled 的解决方法
- 邮件客户端远程管理邮箱
- pdf文件太大怎么变小,如何压缩pdf大小
- 计算器算贝塞尔公式_买车贷款怎么算利息?
- 数据库身份证号用什么类型_【文末送书】MySQL数据库?看这一篇干货文章就够了!...
- 简单数据复杂数据的区别