我读到 JVM 内部存储 short、integer 和 long 为 4 个字节。我从 2000 年的一篇文章中读到的,所以我不知道它现在有多真实。
对于较新的 JVM,使用短整数/长整数是否有任何性能提升?自 2000 年以来,这部分实现是否发生了变化?
谢谢
最佳答案
整数类型存储在许多字节中,具体取决于具体类型:
- 8位字节
- 短 16 位,有符号
- 32 位整数,有符号
- 64 位长,有符号
参见 spec here .
至于性能,这取决于您使用它们做什么。 例如,如果您将文字值分配给 byte 或 short,它们将被放大为 int,因为默认情况下文字值被视为 int。
byte b = 10; // upscaled to int, because "10" is an int
这就是为什么你不能这样做:
byte b = 10;
b = b + 1; // Error, right member converted to int, cannot be reassigned to byte without a cast.
因此,如果您计划使用 bytes 或 shorts 来执行一些循环,您将一无所获。
for (byte b=0; b<10; b++)
{ ... }
另一方面,如果您使用字节数组或 short 来存储一些数据,您显然会受益于它们减小的大小。
byte[] bytes = new byte[1000];
int[] ints = new int[1000]; // 4X the size
所以,我的回答是:视情况而定:)
关于java短整型长整型性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2380696/