代码优化细节

1、尽量指定类、方法的final修饰符

2、尽量重用对象、

3、及时关闭流

4、尽量使用局部变量,实例变量等创建是在堆中,效率较慢,局部变量在方法中创建,方法的运行结束消失而消失

5、减少变量的重复运算,比如在for循环中,调用size(),每次都要进行调用

6、尽量采用懒加载,在需要的时候创建

7、慎用异常

8、不要在循环中使用try catch

9、集合类等指定初始长度

10、当复制大量数据时,使用System.arraycopy()命令

11、循环内不要不断创建对象引用,

不推荐

for (int i = 1; i <= length; i++){
    Object obj
= new Object(); }

改为:

Object obj = null;for (int i = 0; i <= count; i++) { obj = new Object(); }

12、基于效率和类型检查的考虑,应该尽可能使用array,无法确定数组大小时才使用ArrayList

13、尽量使用HashMap、ArrayList、StringBuilder,除非线程安全需要,否则不推荐使用Hashtable、Vector、StringBuffer,后三者由于使用同步机制而导致了性能开销

14、不要将数组声明为public static final、

15、尽量避免随意使用静态变量、

16、使用同步代码块替代同步方法

17、将常量声明为static final,并以大写命名

这样在编译期间就可以把这些内容放入常量池中,避免运行期间计算生成常量的值。另外,将常量的名字以大写命名也可以方便区分出常量与变量

18、不要创建一些不使用的对象,不要导入一些不使用的类

19、程序运行过程中避免使用反射

20、使用数据库连接池和线程池

21、使用带缓冲的输入输出流进行IO操作

22、顺序插入和随机访问比较多的场景使用ArrayList,元素删除和中间插入比较多的场景使用LinkedList这个,理解ArrayList和LinkedList的原理就知道了

23、不要让public方法中有太多的形参

24、字符串变量和字符串常量equals的时候将字符串常量写在前面

这么做主要是可以避免空指针异常

25、不要对数组使用toString()方法

26、不要对超出范围的基本数据类型做向下强制转型

27、公用的集合类中不使用的数据一定要及时remove掉

28、把一个基本数据类型转为字符串,基本数据类型.toString()是最快的方式、String.valueOf(数据)次之、数据+””最慢

28、使用最有效率的方式去遍历Map

     Map<String, String> map= new HashMap<String, String>();
        map.put("111", "222");
        Set<Map.Entry<String, String>> entrySet = map.entrySet();
        Iterator<Map.Entry<String, String>> iter= entrySet.iterator(); 
        while (iter.hasNext()){
          Map.Entry<String, String> entry = iter.next();
          System.out.println(entry.getKey() + "\t" + entry.getValue());
        }

29、对资源的close()建议分开操作

posted @ 2021-11-30 12:50  清华大咖  阅读(46)  评论(0编辑  收藏  举报