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' ;