Java-基础类

Java-基础类

int

在 Java 中,int​ 类型是32位的。它表示一个32位的带符号整数,范围从 -2^31​ 到 2^31 - 1​,即从 -2147483648​ 到 2147483647​(±21亿)。

为什么不是64位?

Java中的int​类型是32位的,而不是64位,是由于历史原因和平台兼容性考虑。

当Java语言设计之初,主要关注了内存效率和性能。32位整数的操作对于许多应用程序来说足够,并且可以更有效地使用内存。此外,Java的设计目标之一是在各种平台上实现一致性,包括32位和64位的操作系统。因此,为了保持跨平台的一致性,Java选择了32位整数。

随着时间的推移,Java确实引入了64位的原始数据类型,即long​类型,以满足更大范围的整数需求。因此,如果需要更大的整数范围,可以使用long​类型。但对于一般的整数操作,使用32位的int​类型通常足够,并且可以提供更好的性能和内存效率。

long

在Java中,long​类型是64位的,表示一个64位的带符号整数。long​的范围从 -2^63​ 到 2^63 - 1​,即从 -9223372036854775808​ 到 9223372036854775807​(±922亿亿)。这提供了更广泛的整数范围,适用于需要处理非常大的整数值的情况。

Integer

Integer​是int​的包装类型,其中包含一个IntegerCache​类,缓存了-128~127的所有数字。

可通过jvm参数java.lang.Integer.IntegerCache.high​来调整最大值

1702463776196

numberOfLeadingZeros(int i)

返回指定int值的二进制补码二进制表示形式中最高位(“最左边”)一位之前的零位数。如果指定值在其二进制补码表示形式中没有一位(换句话说,如果它等于零),则返回 32。
请注意,此方法与以 2 为底的对数密切相关。对于所有正int值 x:
下限(log 2 (x)) = 31 - numberOfLeadingZeros(x)
ceil(log 2 (x)) = 32 - numberOfLeadingZeros(x - 1)
形参:
i – 要计算前导零数量的值
返回值:
指定int值的二进制补码二进制表示形式中最高位(“最左边”)一位之前的零位数,如果该值等于零,则为 32。
自:
1.5

入参 结果 说明
0 32 0的二进制标识为(32个0)
00000000000000000000000000000000
7 8 7的二进制标识为(29个0)
00000000000000000000000000000111
15 16 15的二进制标识为(28个0)
00000000000000000000000000001111

posted @ 2023-12-14 22:31  安浩阳  阅读(9)  评论(0编辑  收藏  举报