java那些事

5 篇文章 0 订阅
JAVA编程中尽量要做到的一些地方
1.[size=large][color=darkblue]尽量使用StringBuilder和StringBuffer进行字符串连接[/color][/size]

2.单线程应尽量使用HashMap,ArrayList HashTable, vector等使用了同步机制,降低了性能.

3.尽量减少对变量的重复计算
Eg: for(int i = 0; i<list.size(); i++) 应该改为: for(int i = 0; len = list.size(); i<len; i++)

4.尽量使用移位来代替"a/b, a*b"的操作
"/"是一个代价很高的操作.使用移位的操作将会更快和更有效
Eg: int num =a/4; int num = a/8;
int num =a*4; int num = a*8;
应该改为:int num = a>>2; int num = a>>3;
int num = a<<2; int num = a<<3;

5.尽量确定StringBuffer的容器
StringBuffer的构造器会创建一个默认大小(通常是16)的字符数组,在使用中,如果超出这个大小,就会重新分配内存,创建一个更大的数组,
并将原先的数组复制过来,在丢弃旧的数组.在大多数情况下,你可以在创建StringBuffer的时候指定大小,这样就避免了哎容量不够的时候自动增长,以提高性能.

6.[size=large][color=darkblue]尽量避免使用二维数组.[/color][/size]

7.[size=medium][color=violet]尽量避免使用split[/color][/size]
除非是必须的,否则应该避免使用Split, Split由于支持正则表达式,所以效率比较低,如果是频繁的几十,百万级的调用会消耗大量资源,如果确实需要频繁的调用Split,
[size=x-large][color=red]可以考虑使用aoache的StringUtils.split(string,char),[/color][/size]

8.ArrayList & LinkedList
一个线性表,一个是链表,
一句话,随机查询尽量使用ArrayList,ArrayList优于LinkedList,LinkedList还要移动指针.
添加删除的操作LinkedList优于ArrayList,ArrayList还要移动数据,(理论性分析)

9.尽量使用System.arraycopy()代替通过来循环复制数组
System.arraycopy()要比通过循环来复制数组快的多

10.数字转换成字符串
String.valueOf(set.size())

11.捕获所有的异常
catch(NoResultException)

12.忽略所有异常
catch(Exception e) {
throw new MyRuntimeException(" Could not do stuff because: " +e.getMessage, e);}

13.异常传播
try{} catch(ParseException e) {
throw new RuntimeException(e.getMessage(), e)
}


14.捕获不可能出现的异常
catch(SomeException e) {    
throw new IllegalStateException(e.getMessage(), e);
}

[size=large][color=red]Code Review(代码评审)[/color][/size]
[list]
[*]1.测试代码不需要提交
[*]2.特殊字符都提取为常量
[*]3.只使用for循环能满足需求
[*]4.参数使用前需要判断参数是否为空的情况
[*]5.要求平均每5行代码有一行注释,注释只要写到站在阅读者的角度能看懂就行
[*]6.非空判断使用StringUtil,或者非空的值放在equals前面
[*]7.直接使用TopReviewerDO
[*]8.变量取有意义的名字,去掉不需要的引用
[*]9.如果在if里用了return,则不需要使用else
[*]10.提高性能,只进行一次SQL查询
[*]11.其高代码性能.实例化对象之前,先判断数据是否存在
[*]12.增加方法和类的注释
[*]13.可能空指针
[*]14.空指针错误
[*]15.重构一个方法
[/list]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值