Long vs Integer,long vs int,使用什么以及何时使用?

问题

有时我看到API的使用longLongintInteger,我无法确定如何做出决定?

我什么时候应该选择什么?


#1 热门回答(157 赞)

Long是314309335形式的long,而Integer是对象形式的int

Thelonguses64 bits。 27575690使用32位,因此只能容纳高达±20亿(-231到231-1)的数字。

你应该使用longint,除非你需要使用从Object继承的方法,例如hashcode.Java.util.collections方法通常使用盒装(Object包装)版本,因为它们需要适用于任何Object,而原始类型,如intlong,不是anObject

与所有非原始Java类型一样,另一个区别是longint是按值分配的,而LongInteger是按引用值分配的。因此,如果可以修改a15536​​2049或Integer(它不是,它们在不使用JNI代码的情况下是不可变的),那么另一个原因就是使用一个而不是另一个。

最后一个区别是aLongInteger可能是null


#2 热门回答(24 赞)

对于原始类型,你可以做一些事情:

  • 具有空值
  • 同步它们
  • 将它们用作泛型类的类型参数,并与之相关:
  • 将它们传递给与Objects一起使用的API

除非你需要其中任何一个,否则你应该更喜欢原始类型,因为它们需要更少的内存。


#3 热门回答(15 赞)

  • 默认情况下,在持有数字时使用int。
  • 如果int的范围太小,请使用long
  • 如果long的范围太小,请使用BigInteger
  • 如果需要将数字作为对象处理(例如将它们放入Collection中,处理null,...)请使用Integer / Long