JAVA代码的优化分为两个方面:

一、减小代码的体积。二、提高代码的执行效率。

======================================================================================

一、减小代码的体积

1.如果要改动代码尽量集中在一处修改,例如要修改某些属性的值,可以写一个统一化的方法对属性进行修改。

2.如果有一个功能超过两次被使用,可以考虑把它封装一个静态的方法写在公共的Utils中。

3.如果有超过两个子类在某个函数中做了相似但又不同的操作,可以考虑将这个函数在父类中抽象化。

 

二、提高代码的执行效率

1.时间复杂度尽量要小(越少的loop嵌套,代码的执行效率越高)。写代码时可以多采用过滤的方式提取出目标数据,尽量不使用循环的方式提取。

2.写代码切勿相互依赖,尽量做到解耦(例如A Service中调用了B Service中的方法,同理B也调用了A,这样是不可以的)。

3.减少动态运算的语句,宁可浪费一点内存去处理数据,也不可让它动态运算浪费CPU。

4.减少对象的创建,由于JVM创建对象的时候会花费时间生成,当对象失效的时候JVM还会对其进行垃圾回收,例如对字符串的拼接尽量使用StringBuffer、if判断中对象的使用可以在判断中创建。如下代码:

 

//低效率的写法
List list  = new ArrayList<>();
int[] arr = new int[]{0,1,5,8,15};
for(int i = 0; i <= arr.length; ++i;){
  String name = new String("Jack");
  if(arr[i]==i){
    list.add(name);
  }
}
//高效率的写法
List list  = new ArrayList<>();
int[] arr = new int[]{0,1,5,8,15};
for(int i = 0, len = arr.length; i <= len; ++i;){
  if(arr[i]==i){
    String name = new String("Jack");
    list.add(name);
  }
}

5.如果成员变量和局部变量都能保证功能的实现,尽量使用局部变量。因为局部变量存储在栈中速度较快,成员变量存储在堆中速度较慢。

6.初始化变量时尽量不要写在循环中,如下代码:

//低效率的写法
for(int i = 0; i <= n; ++i){
  String name = "Jack";
  System.out.println(name);
}
//高效率的写法
String name = "Jack";
for(int i = 0; i <= n; ++i){
  System.out.println(name);
}

7.数据库的连接和I/O流的操作,在完成使用后应当及时的进行关闭。

8.try catch不要写在循环的嵌套中,尽量写在循环的最外层,异常的使用要谨慎。