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

时间:2015-04-02 15:35:24

标签: java primitive primitive-types

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

我想我可以定义自己的,但这有点笨重,特别是如果它们可以在某处使用。

2 个答案:

答案 0 :(得分:24)

不是一个类,但是你有Integer.SIZE,依此类推Long和浮点类。您还有*.BYTES

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

注意:*.BYTES仅在Java 8之后定义(感谢@Slanec注意)

*.SIZE出现在Java 5中,但你至少使用它,对吗?)

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

答案 1 :(得分:9)

基元大小的规范包含在Java语言规范Section 4.2

  

整数类型是byte,short,int和long,其值分别是8位,16位,32位和64位二进制补码整数,以及char,其值为16-表示UTF-16代码单元的位无符号整数(§3.1)。

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