在本文中,我们将解释如何在 Java 中将
long
转换为
int
,并编写一些代码示例。由于
long是比
int
更大的数据类型,所以这里我们应该使用类型转换来进行这种转换。您可能已经知道 Java 中的
long
和
int
都是原始数据类型。这意味着它们不是类对象。所有对象和数组都存储在堆空间中,而基本类型(如
int
和
long)
存储在堆栈内存中。
Long
和
int
有点相似。整数表示整数,可以是正数、负数或零。既
长
和
int
是整数类型,因此它们在某种程度上是兼容的。问题是,
long
类型的范围是-263到263-1,或者-9223372036854775808到9223372036854775807。也就是说,Java程序为
long
类型分配了64位。同时,
int
类型占32位,可以放-231~231-1之间的数,也可以放-2147483648到2147483647之间的数。这意味着任意数量的int类型都可以很容易地
放入
一个
长
型。在 Java 中,当使用基元时,从较窄类型到较宽类型的转换是自动的。换句话说,它被称为加宽。
int myInt= 18;
long myLong= 16000;
myLong = myInt;
这里我们将一个
int
分配给一个
long
变量。一切都进行得很顺利,在一个更大的范围内,一个较小的范围安静地适合,除了内存空间我们没有丢失任何东西。
顺便说一句,当我们声明一个long
类型的变量并定义它的值时,最好将字母
l分配给它,这在我们处理
int
范围之外的数字时会派上用场。
long myVeryLong = 10000000000l;
好吧,16000 绝对是我们期望看到的,但为什么 -2147483648 中是负号?这个 1410065408 是什么意思?事实上,这些数字存储在一个
long
变量中,我们记得它占用 64 位。我们试图将这些数字放入一个只能存储 32 位的
int变量中。
通常,这 32 个单元格将包含长
数
前 32 位的 0 和1,其余的将被简单地丢弃。因此,如果原始数字不适合 32 位,那么不适合的那些位将被简单地丢弃。这就是为什么我们只有正确的数字 16000,因为它占用的空间少于 32 位。