代码之家  ›  专栏  ›  技术社区  ›  non sequitor

在Java中有人使用短或字节吗?

  •  30
  • non sequitor  · 技术社区  · 15 年前

    除了在流媒体中使用(byte[])之外,我没有看到byte和short使用得太多。另一方面,我看到了长时间使用的实际值是100_,字节将更合适。这是现在内存相对便宜的结果,还是开发人员不必担心的细节问题?

    10 回复  |  直到 6 年前
        1
  •  33
  •   Shawn Mclean    14 年前

    它们在为内存或磁盘空间不足的嵌入式设备编程时使用。如电器等电子设备。

    字节也用于低级的Web编程,在这种编程中,您使用头等向Web服务器发送请求。

        2
  •  22
  •   Stephen C    11 年前

    这个 byte 数据类型通常用于处理来自文件或网络连接的原始数据,尽管它主要用作 byte[] . 这个 short short[] 类型通常与GUI和图像处理(用于像素位置和图像大小)以及声音处理相关。

    使用的主要原因 字节 短的 是很清楚的。程序代码无类别地声明只使用8或16位,当您意外地使用更大的类型(没有适当的类型转换)时,会得到编译错误。(不可否认,在编写代码时,这也可能被视为一种麻烦…但是,类型转换的存在再次标志着读者发生了截断的事实。)

    你不能通过使用 字节 短的 在简单变量中而不是 int ,因为大多数Java实现将堆栈变量和对象成员对齐在Word边界上。但是,基元数组类型的处理方式不同;即 boolean , 字节 ,请 char 短的 数组是字节对齐的。但是,除非数组的大小或数量很大,否则它们不会对应用程序的总体内存使用做出任何重要贡献。

    所以我想开发人员不使用的主要原因是 字节 短的 和你一样(一个C开发人员?)可能会期望它真的不会有太大的区别(或者通常是任何区别)。Java开发者往往不会 痴迷 像老派的C开发人员那样使用过多的内存:—)。

        3
  •  13
  •   Peter Lawrey    14 年前

    在64位处理器中,寄存器都是64位的,因此如果您的局部变量被分配给一个寄存器,并且是布尔值、字节、短、char、in t、float、double或long,那么它不会使用内存,也不会保存任何资源。 对象是8字节对齐的,因此它们总是占用内存中8字节的倍数。这意味着布尔、字节、短、字符、整数、长、浮点和双精度、原子布尔、原子整数、原子长、原子引用都使用相同的内存量。

    如前所述,短类型用于数组和读/写数据格式。即使如此,也不经常使用short。

    同样值得注意的是,一台服务器的GB成本约为80英镑,因此一个MB大约为8便士,一个KB大约为0.008便士。字节和长的差别大约是0.00006便士。你的时间比那更有价值。特别是如果你有一个错误,这是由于数据类型太小造成的。

        4
  •  5
  •   McDowell rahul gupta    15 年前

    我最常使用 short byte 使用二进制格式时的类型和 DataInput / DataOutput 实例。如果规范说下一个值是8bit或16bit值,那么将它们提升为 int (也许它们是位标记),它们是一个明显的选择。

        5
  •  3
  •   Luke Woodward    14 年前

    算法 byte S和 short S比 int 例如,如果 b1 b2 是两个 字节 变量,你不能写 byte b3 = b1 + b2 添加它们。这是因为Java从不在任何内部进行算术运算。 int ,所以表达式 b1 + b2 有类型 int 即使只加了两个 字节 价值观。你得写 byte b3 = (byte) (b1 + b2) 相反。

        6
  •  2
  •   Dinah SLaks    14 年前

    我用过 short 在基于16位体系结构创建仿真器时广泛使用。我考虑过使用 char 所以我可以有一些无符号的东西,但是使用真正整数类型的精神最终还是失败了。

    编辑: 关于当我需要最重要的一点时我所做的事情的不可避免的问题:当我在模仿的事情发生时,它几乎从未被使用过。在使用它的少数地方,我只是使用位修饰符或数学黑客。

        7
  •  1
  •   C. Ross trotttrotttrott    15 年前

    我认为在大多数应用程序中,short没有域的含义,所以使用integer更有意义。

        8
  •  1
  •   Tom Hawtin - tackline    15 年前

    short 其他的通常用于存储图像数据。请注意,它是真正重要的位数,而不是算术属性(它只会导致提升到 int 或者更好。

    短的 在javacard中也用作数组索引(1.0和2.0,IIRC,但不是3.0,后者还具有HTTP堆栈和Web服务)。

        9
  •  1
  •   Dean J    14 年前

    字节[]总是发生;缓冲区,特别是用于网络、文件、图形、序列化等。

        10
  •  0
  •   Charles Roberto Canato    10 年前

    当然,大多数时候,开发人员(Java、C语言、BASIC等)决不需要一个真正的好的技术理由来决定一个int、短或字节——当然,当容量足够时。如果这个值低于20亿,那么它将是int。

    你确定我们会有超过255岁的人吗?好吧,你永远不知道!

    32767个可能的国家不够吗?别想得太小!

    在您的示例中,如果您绝对确信字节变量永远不会溢出,那么您可以非常满意包含100的字节变量。为什么男人用int最多?因为…因为。

    这是我们大多数人所做的事情之一,因为我们大多数时候都是这样看待的,从来没有提出过不同的要求。

    当然,我不反对“一切都是智力”。我只是喜欢对每种价值都使用正确的类型,不涉及压力。