【问题标题】:Using byte, short, and other primitive types [closed]使用字节、短和其他原始类型 [关闭]
【发布时间】:2015-03-30 12:44:10
【问题描述】:

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

【问题讨论】:

  • 我对此不是 100% 确定,所以我会将其作为评论发布。如果它与需要由 Java 运行时环境管理的 Java 有关,我不会感到惊讶,那么当它必须堆叠在一个大小是其大小的 1000 倍的环境上时,节省 16 个字节的意义何在。 C++ 不需要这个,因此保存这些字节实际上可能会产生性能差异。

标签: java primitive-types


【解决方案1】:

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

它与 OOPness 没有任何关系;即使在真正没有任何 OOP 概念的 C 语言中,几乎每个数字都使用 int 是很常见的,因为它的大小通常被选择为 fastest width for the given architecture

【讨论】:

    【解决方案2】:

    除非它是像位掩码或内存密集型这样的低级别,每个对象占用的每个字节都很重要,否则我可能会使用int,即使byte 可能会这样做。

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

    如果我知道实际上只有 10 个可能的值,从 OO 的思维方式来看,我不会考虑使用 byte 来存储它。为什么值只会从 1 到 10?每个值都意味着什么特别的吗? 如果是这样,我可能会使用 enum 并为这 10 个值中的每一个赋予一个显示意图的名称。

    【讨论】:

    • 投反对票的人能解释一下原因吗?
    猜你喜欢
    • 2014-04-13
    • 2019-01-12
    • 1970-01-01
    • 1970-01-01
    • 2019-01-17
    • 2010-10-11
    • 2014-06-09
    • 1970-01-01
    • 2011-11-20
    相关资源
    最近更新 更多