Long vs Integer,Long vs int,使用什么和什么时候?

有时候我看到 API 使用 long或者 Long或者 int或者 Integer,我不知道是如何决定的?

我什么时候该选择什么?

372860 次浏览

LonglongObject形式,Integerint的对象形式。

long使用 64位int使用32位,因此最多只能容纳 ± 20亿个数字(-231到 + 231-1)。

您应该使用 longint,除非需要使用从 Object继承的方法,例如 hashcodeJava.util.collections方法通常使用盒装的(Object包装的)版本,因为它们需要为任何 Object工作,而基元类型(如 intlong)不是 Object

另一个区别是 longint按值传递(pass-by-value),而 LongInteger按引用传递值,就像所有非原始 Java 类型一样。因此,如果有可能修改 LongInteger(不可能,它们不使用 JNI 代码是不可变的) ,那么就有另一个理由使用其中一个而不是另一个。

最后一个区别是 LongInteger可以是 null

有些事情你不能用原始类型来做:

  • 有一个 null
  • 对准他们
  • 将它们用作泛型类的类型参数,并与此相关:
  • 将它们传递给与 Object一起工作的 API

除非您需要这些类型中的任何一种,否则您应该更喜欢基元类型,因为它们需要更少的内存。

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

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

intlong是基元类型,而 IntegerLong是对象。基本类型效率更高,但有时需要使用对象; 例如,Java 的集合类只能处理对象,所以如果需要一个整数列表,就必须将其设置为 List<Integer>(不能在 List中直接使用 int)。

当需要使用一个可能超过32位的非常长的数来表示时,可以使用 long 来确保不会出现奇怪的行为。

从 Java5开始,您可以使用装箱和装箱特性来使 int 和 Integer 的使用完全相同。这意味着你可以:

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

进出装箱允许您在 int 和 Integer 之间切换,而不需要任何额外的转换(对于 LongDoubleShort也是一样的)

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

A)对象类“ Long”与基元类型“ Long”(至少在 Java 中)

B)基本类型有不同(甚至不清楚)的内存大小:

Java-一切正常: https://docs.oracle.com/javase/tutorial/java/nutsandbolts/datatypes.html

  • Byte,char. . 1B. . 8b
  • 短整数. . 2B. . 16B
  • 国内... 4B... 32B
  • Long int. . 8B. . 64B

混乱: https://en.wikipedia.org/wiki/C_data_types

  • 短... 16b
  • 16b... 卧槽? ! ? !
  • 长... 32b
  • 长长... 64b... 乱七八糟! :-/

Integer 是一个有符号的32位整数类型

  • 表示为 Int
  • 大小 = 32 bits (4byte)
  • 可以保存范围 -2,147,483,648 to 2,147,483,647的整数
  • 默认值为 0

Long * * 是一个有符号的64位整数类型
  • 表示为 Long
  • 大小 = 64 bits (8byte)
  • 可以保存范围 -9,223,372,036,854,775,808 to 9,223,372,036,854,775,807的整数
  • 默认值为 0L

如果变量的使用在32位范围内,则使用“ Int”,否则使用“ long”。长度通常用于科学计算,像这样的东西需要很高的准确性。(如圆周率的值)。

YouTube 就是一个选择其中一个的例子。他们首先将视频浏览计数器定义为一个 int,当一个流行视频的浏览量超过2,147,483,647次时,这个 int就会溢出。由于 Int计数器不能存储超过其范围的任何值,YouTube 将该计数器更改为64位变量,现在可以计算9223372036854775807浏览量。理解你的数据并选择适合的类型,因为 < strong > 64位变量比32位变量占用双倍的内存。