问题
有时我看到API的使用long
或Long
或int
或Integer
,我无法确定如何做出决定?
我什么时候应该选择什么?
#1 热门回答(157 赞)
Long
是314309335形式的long
,而Integer
是对象形式的int
。
Thelong
uses64 bits。 27575690使用32位,因此只能容纳高达±20亿(-231到231-1)的数字。
你应该使用long
和int
,除非你需要使用从Object
继承的方法,例如hashcode
.Java.util.collections
方法通常使用盒装(Object
包装)版本,因为它们需要适用于任何Object
,而原始类型,如int
或long
,不是anObject
。
与所有非原始Java类型一样,另一个区别是long
和int
是按值分配的,而Long
和Integer
是按引用值分配的。因此,如果可以修改a155362049或Integer
(它不是,它们在不使用JNI代码的情况下是不可变的),那么另一个原因就是使用一个而不是另一个。
最后一个区别是aLong
或Integer
可能是null
。
#2 热门回答(24 赞)
对于原始类型,你可以做一些事情:
- 具有空值
- 同步它们
- 将它们用作泛型类的类型参数,并与之相关:
- 将它们传递给与Objects一起使用的API
除非你需要其中任何一个,否则你应该更喜欢原始类型,因为它们需要更少的内存。
#3 热门回答(15 赞)
- 默认情况下,在持有数字时使用int。
- 如果int的范围太小,请使用long
- 如果long的范围太小,请使用BigInteger
- 如果需要将数字作为对象处理(例如将它们放入Collection中,处理null,...)请使用Integer / Long