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比较,不能用==。

posted @ 2017-01-26 23:45  睡死猴  阅读(62)  评论(0)    收藏  举报