最近在修改项目代码,使得代码符合门禁要求,其中有些是比较有用的,比如FindBugs里面的问题。现在记录下比较受益的一些问题,也为了以后再次修改的时候能够快速查找与定位。
- Boxing/unboxing to parse a primitive
//错误代码
long value = Long.valueOf("111111111");
//修改结果
long value = Long.parseLong("111111111");
这里错误的原因是:上面那行代码多进行了一次装箱与拆箱转换。
Long.valueOf()
返回的是Long
类型,赋值过程为:String => long => Long => long
Long.parseLong()
返回的是long
类型,赋值过程为:String => long
可以发现,在赋值给基础类型的时候,用parseLong
比用valueOf
少一次装箱与拆箱,其它基础类型与包装类同理。
- Result of integer multiplication cast to long
int a