Java 是否在任何地方定义其基本类型的大小?

Does Java define the size of its primitive types anywhere?

是否有一个包定义了我可以在我的项目中导入的 Java 原语的大小?我正在做一些手动位设置并保留一个字节索引。当我设置一个 int 时,我不想做 currentByte += 4(幻数不受欢迎),我宁愿做 currentByte += <SomePackage>.SIZE_OF_INT

我想我可以定义我自己的,但这有点笨拙,特别是如果它们在某个地方可用的话。

不是 class,但您有 Integer.SIZE,对于 Long 和浮点 class 也是如此。你还有 *.BYTES.

因此Integer.SIZE是32,Integer.BYTES是4,Double.SIZE是64,Double.BYTES是8,等等;如果您想知道,所有这些都是 int

注意:*.BYTES 仅从 Java 8 开始定义(感谢@Slanec 的注意)

(*.SIZE 出现在 Java 5 但你 至少使用那个,对吧?)

是的,这是由 JDK 定义的,因为 JLS 本身定义了基本类型的大小;因此,您可以保证在任何平台上的任何 Java 实现上,这些常量都具有相同的值。

原语大小的规范包含在Java语言规范中,Section 4.2

The integral types are byte, short, int, and long, whose values are 8-bit, 16-bit, 32-bit and 64-bit signed two's-complement integers, respectively, and char, whose values are 16-bit unsigned integers representing UTF-16 code units (§3.1).

这是 标准,不会改变,因此不需要导入它们。您可以将它们用作幻数(尽管 指出,这些是自 Java 5 以来存储在各种包装器 类 中合理位置的幻数,您应该使用它们而不是自己重新定义它们)。