代码优化

来源:互联网 发布:景观设计效果图软件 编辑:程序博客网 时间:2024/05/01 03:26

Spring代码优化:@Autowired 注解  替换 set get 方法

代码优化:

1.避免在循环条件中使用复杂表达式

Eg:     for(int i = 0;i<list.size();i++)

优化后:int size = list.size();

        for(int i = 0;i<size ;i++)

2.为Vectors 和 hashtable定义初始大小

Eg:     public vector v = new vector();

优化后:public vector v = new vector(10);

3.在finally块中关闭数据库连接、I/O流操作以释放资源

4.使用位移代替a/b,a*b操作

Eg: a/4 <-->a>>2    a/8<-->a>>3    / 右移 >>

    A*4 <-->a<<2    a/8<-->a<<3    *左移 <<

5.不要在循环中调用synchroinized()方法

Eg: public synchronized void method (object o) {} 

    private void test () { 

       for (int i = 0; i < vector.size(); i++) {

         method (vector.elementat(i)); } 

优化后:public void method (object o) {} 

        private void test () { 

          synchronized {//在一个同步块中执行非同步方法

               for (int i = 0; i < vector.size(); i++) {

                method (vector.elementat(i)); } }

6.将try/catch块移出循环

7.对于boolean值,避免不必要的等式判断

Eg:     boolean method (string string) { 

          return string.endswith ("a") == true; }

优化后:boolean method (string string) { 

          return string.endswith ("a");}

8.对于常量字符串,用String 代替StringBuffer

9.使用条件操作符替代 if;else

Eg:  

public int method(boolean isdone) {

if (isdone) { 

 return 0; 

} else { 

return 10; 

} } 

优化后:

public int method(boolean isdone) { 

 return (isdone ? 0 : 10);

10.不要在循环体中实例化变量

11.确定StringBuffer的容量

12.应该避免创建对象,防止调用构造函数带来的相关性能成本,以及在对象结束生命周期是进行垃圾收集所带来的成本。考虑以下这些准则: 

a、 只要有可能,就使用基本变量类型,而不使用对像类型。例如,使用int,而不使用Integer; 

b、 缓存那些频繁使用的寿命短的对象,避免一遍又一遍的重复创建对象,并因此加重垃圾收集的负担; 

c、 在处理字符串时,使用StringBuffer而不是使用字符串String进行连接操作,因为字符串对象具有不可变的特征,并且需要创建额外的字符串对像以完成相应的操作,而这些对象最终必须经历GC; 

d、 避免过度地进行JAVA控制台的写操作,降低字符串对像处理、文本格式化和输出带来的成本; 

e、 实现数据库连接池,重用连接对象,而不是重复的打开和关闭连接; 

f、 尽早释放无用对象的引用; 

g、 使用String str = “a”;定义字符串,而不是使用

        String str = new String(“a”);

13.对象使用完毕时,手动置为null

14.尽量使用HashMap 和 ArrayList,除非必要,否则不推荐使用HashTable 和 Vector,后者由于使用同步机制,而导致了性能的开销。

15.尽量使用HashMap 和 ArrayList,除非必要,否则不推荐使用HashTable 和 Vector,后者由于使用同步机制,而导致了性能的开销。

16.在进行金额计算时使用BigDecimal 对于帐务系统中金额处理的运行,一律采用BigDecimal 例子: 

转换分为无: 

BigDecimal money = new BigDecimal(100);  money = money.movePointLeft

(2);

处理结果为:1.00  

转换元为分:  

BigDecimal money = new BigDecimal(100);  money = money.movePointRight(2); 

处理结果为:10000 

15.让访问的实例变量的getter/setter方法变成final

16.避免不需要的instanceof操作

17.避免不需要的造型操作

18.查找单个字符的话,用charAt()代替startWith()

19.如果字符串只有一个字符的话,用‘’代替“”。

Eg: String string = s + "d";      string = "abc" + "d";

优化后:String string = s + 'd'; string = "abc" + 'd' ;


0 0
原创粉丝点击