浅谈JAVA代码优化
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不要写在循环的嵌套中,尽量写在循环的最外层,异常的使用要谨慎。