使用 byte、short 和其他基本类型

Using byte, short, and other primitive types

为什么我很少见到他们。我只看到它们主要用于网络,其中大小确实很重要。但是,例如,我有一个变量只使用 1-10 范围内的数字,我不应该使用字节吗?我习惯于使用尽可能小的内存编写 C/C++,为什么在 java 中不是这样?

除非它是低级别的东西,例如位掩码或内存密集型,其中每个对象占用的每个字节都很重要,否则我可能会使用 int,即使 byte 可以。

不要忘记 Java 对象经常被填充以使 JVM 更容易访问。因此,根据 class 中的其他字段,使用字节可能仍会占用与 int 相同的内存!参见 javamex's explantation of Java's memory usage

如果我知道只有 10 个可能的值,从面向对象的思维方式来看,我不会考虑使用 byte 来存储它。为什么值只会从 1 到 10?每个值都意味着什么特别的东西吗? 如果是这样,我可能会使用 enum 并为这 10 个值中的每一个指定一个意图揭示的名称。

实际上,在大多数支持 Java 的处理器中,32 位整数使用起来最快。例如,在 Intel 处理器上,32 位整数寄存器具有最短的操作码,而 16 位整数的处理速度稍慢。此外,大多数时候使用 bytes 或 shorts 不会为您节省 space。

它与 OOPness 没有任何关系;即使在真正没有任何 OOP 概念的 C 中,对几乎每个数字使用 int 也很常见,因为它的大小通常被选择为 .