代码优化

157 阅读2分钟

编码及优化技巧

1.final修饰

带有final修饰符的类不能被继承,方法不能被重写,性能提高约50%

2.尽量重用对象

特别是string转为stringBuilder或stringbuffer

3.尽可能使用局部变量,垃圾回收及内存消耗会少很多

4.及时关闭流,释放资源

5.减少对变量的重复计算

如for(int i =0; i<list.size();i++)应该写为for(int i = 0,length = list.size();i<length;i++),在size很大的时候对响应速度提升很大

6.尽量使用懒加载策略,即在需要的时候才加载

如string s = "aaa";if(i == 1){lsit.add(str)}应该改为if(i==1){string a ="aaa";list.add(str)}

7.不要在循环内使用try..catch,应该在最外层使用

8.如果能估计到待添加的数据长度,尽可能在初始时就指定长度

以stringBuilder为例,stringBuildet(int size):默认分配size个字符的空间

stringBuffer,LinkedList,ArrayList,HashMap,hashSet等也如此

9.循环内不要创建对象引用

例:object o = null;

for(....){

o = new object();

}这样在运行期间只有一个object对象的引用,可大大节省内存。

10.尽可能使用Array,当无法确定数组大小时才用ArrayList

11.尽量使用HashMap,ArrayList,StringBuilder,除非有线程安全的需求,否则不推荐使用stringBuffer,hashtable,vector,后三者因为同步机制导致了性能开销

12.尽量避免随意使用静态变量,因为GC不会回收这个对象所占用的空间

13.及时清除不需要的会话,在大规模集群中,对对象序列化的开销是非常大

14.尽量将常量声明为static final,并以大写字母开头,因为在编译期间就会把这些内容分配到常量池

15.使用数据库时使用连接池和线程池

16.使用带缓冲的输入输出流进行IO操作,如BufferInputStream,bufferWriter等,可以极大的提高IO效率

17.合理使用ArrayList和linkedList

18.不要让public方法中有太多形参,多于3,4个时应该将参数封装为一个对象

19.字符串变量和字符串常量equals的时候尽量将常量写在前面

如 string str = "123"

if("123".quals(str)) 这样做可以避免空指针异常

20.不要对数组使用toString 方法

21.把一个基本数据类型转换为字符串类型尽量使用toString方法

速度对比:data.tostring() > String.valueOf( data ) > data + ""

22.在catch语句中对资源进行关闭,当要关闭多个资源时应该分开操作,避免其中一个关闭失败时对其他的关闭产生影响

23.循环内千万不要使用“”+“”对字符串进行拼接操作,应该使用stringBilder.append(),不断的去append

24.静态类,单例类,工厂类将他们的构造简书置为paivate