长与整数,长与整数,什么使用和什么时候?

有时我看到API使用longLongintInteger ,我不知道如何做出这个决定?

我应该什么时候select什么?

LonglongObjectforms, Integerint的对象forms。

long使用64位 。 int使用32位,因此只能保存数字高达±20亿(-2 31到+2 31 -1)。

你应该使用longint ,除非你需要使用从Objectinheritance的方法,比如hashcodeJava.util.collections方法通常使用盒装( Object包装)版本,因为它们需要为任何Object工作,并且像intlong这样的基本types不是Object

另一个区别是longint按值传递的 ,而LongInteger通过引用的值 ,就像所有非原始Javatypes一样。 所以如果可以修改一个LongInteger (不是,它们是不可变的,而不使用JNI代码),那么还有另外一个原因。

最后的区别是LongInteger可能为null

有一些你不能用原始types做的事情:

  • 有一个null
  • 在它们上同步
  • 将它们用作generics类的types参数,并与之相关:
  • 将它们传递给与Object一起使用的API

除非你需要这些,否则你应该更喜欢原始types,因为它们需要更less的内存。

  • 默认情况下使用一个int ,当持有号码。
  • 如果int的范围太小,请使用long
  • 如果long的范围太小,请使用BigInteger
  • 如果你需要处理你的数字作为对象(例如,当把它们放入一个Collection ,处理null ,…)使用Integer / Long Integer

int是一个32位的整数; 一个long是一个64位的整数。 使用哪一个取决于您希望使用的数字的大小。

intlong是原始types,而IntegerLong是对象。 原始types更高效,但有时需要使用对象; 例如,Java的集合类只能与对象一起工作,所以如果你需要一个整数列表,你必须使它成为一个List<Integer> ,例如(你不能直接在List使用int )。

当涉及到使用可能超过32位的很长的数字时,可能需要很长时间才能确保不会有奇怪的行为。

从Java 5开始,你可以使用in-boxing和out-boxing特性来使int和Integer的使用完全相同。 这意味着你可以这样做:

 int myInt = new Integer(11); Integer myInt2 = myInt; 

input和输出框允许你在int和Integer之间切换而不需要额外的转换( LongDoubleShort也一样)

您可以一直使用int ,但Integer包含一些帮助器方法,可以帮助您使用整数执行一些复杂的操作(如Integer.parseInt(String)