java优化
Posted ynhk
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java优化相关的知识,希望对你有一定的参考价值。
一.优化的目
程序用尽可能少的资源完成预定的任务
二.代码优化的目标
1.减小代码的体积
2.提高代码运行的效率
三.具体方法
1.string对象的使用中,字符串连接时应该使用StringBuilder/StringBuffer代替
2.减少对相同结果变量的多次重复运算
for (int i = 0; i < list.size; i++){...}
建议替换为:
int x= list.size; for (int i = 0;i<x i++){...}
3.尽量采用懒加载的策略,即在需要的时候才创建
String str = "aaa";if (i == 1){list.add(str);}
建议替换为:
if (i == 1){String str = "aaa";list.add(str);}
4.循环内不要不断创建对象引用
for (int i = 1; i <= count; i++){Object obj = new Object;}
建议替换为:
Object obj = null;for (int i = 0; i <= count; i++) {obj = new Object; }
5.基本数据类型转为字符串反应最快的使用.toString
反应速度:toString>String.valueOf>数据+
原因:
1、String.valueOf方法底层调用了Integer.toString方法,但是会在调用前做 空判断
2、i + “”底层使用了StringBuilder实现,先用append方法拼接,再用toString方法获取字符串
乘法和除法使用移位操作
6.常量与变量比较,常量在前,避免空指针异常
if (str.equals("123")) {...}
建议替换为:
if ("123".equals(str)){...}
7.public方法,形参要少
1.如果形参比较多(大于2个),不太契合面向对象编程思想
2.参数太多势必导致方法调用的出错概率增加
8.不要对超出范围的基本数据类型做向下强制转型
9.不要创建一些不使用的对象,不要导入一些不使用的类
10.程序运行过程中避免使用反射
11.使用同步代码块替代同步方法
12.使用最有效率的方式去遍历Map
public static void main(String args) { HashMap<String, String> hm = new HashMap<String, String>; hm.put("111", "222"); Set<Map.Entry<String, String>> entrySet = hm.entrySet; Iterator<Map.Entry<String, String>> iter = entrySet.iterator; while (iter.hasNext) { Map.Entry<String, String> entry = iter.next; System.out.println(entry.getKey + " " + entry.getValue); } }
13.乘法和除法使用移位操作,并加上注解
14.尽可能使用局部变量
15.尽量指定类、方法的final修饰符
16.尽量在合适的场合使用单例
17.将常量声明为static final,并以大写命名
18.程序运行过程中避免使用反射
19.使用数据库连接池和线程池(前者可以避免频繁地打开和关闭连接,后者可以避免频繁地创建和销毁线程)
20.使用带缓冲的输入输出流进行IO操作
21.尽量在合适的场合使用单例
22.尽量避免随意使用静态变量
23.异常只能用于错误处理,不应该用来控制程序流程。
24.不要在循环中使用try…catch…,应该把其放在最外层
25.不要创建一些不使用的对象,不要导入一些不使用的类
26.不要对数组使用toString方法
以上是关于java优化的主要内容,如果未能解决你的问题,请参考以下文章
使用 C++ 反转句子中的每个单词需要对我的代码片段进行代码优化
Android 逆向整体加固脱壳 ( DEX 优化流程分析 | DexPrepare.cpp 中 dvmOptimizeDexFile() 方法分析 | /bin/dexopt 源码分析 )(代码片段