int or Integer
int与Integer区别泛泛地说就是基本类型和包装类。但什么时候使用并没有仔细思考过。 找了贤同学和其他的帖子,简单总结。
类型比较:
| int | Integer | |
| 类型 | java基本类型 | 对象 |
| 默认值 | 0 | null |
| 存储 | 32位数据信息 | 指针地址 |
使用场景:
| 应用场景 | int | Integer |
| 运算,e.g.+-*/% | Y | N |
| 参数传递 | Y | Y |
| 返回值 | Y | Y |
| 使用Integer的api | N | Y |
| 集合类 | N | Y |
| map key | N | Y |
| 序列化 | N | Y |
| 由RMI传送 | N | Y |
| 作为其他对象属性由RMI传送 | Y | Y |
| 作为泛型 | N | Y |
| 是否允许null表示空值 | N | Y |
如何选择:
stackoverflow有个回答Use int when possible, and use Integer when needed.
1.使用int没问题就用它吧。必须用对象的时候入参就用Integer,原因性能上int要好于Integer,而且更省存储空间。
2.dao层与db通信尽量使用包装类,原因db值可空,包装类表示为null完全没问题。没有default value 原生类型会报错,而有时我们又不想有default value因为0还是有含义的状态,与null不同。
3.集合类一定用包装类。
有坑勿踩:
看过一个非常不错的编码规约,所有包装类对象之间值比较,全部使用equals方法。
说明:Integer var 在-128~127之间赋值,Integer对象会复用IntegerCache.cache产生的对象。如果在这个区间内比较可以用==。但超过这个范围的对象存在堆内存中。只能用equals比较,不能用==。

浙公网安备 33010602011771号