在Java中,有人使用short或byte吗?

除了在流媒体中使用(byte [])之外,我并没有真正看到字节和短片的使用。 另一方面,我看到长期使用的实际值是| 100 | 和byte更合适。 这是现在相对便宜的内存性质的结果还是开发人员不必担心的这个细节?

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

字节也用于低级Web编程,您可以使用标题等向Web服务器发送请求。

在处理来自文件或网络连接的原始数据时经常使用byte数据类型,尽管它主要用作byte[]shortshort[]类型通常与GUI和图像处理(用于像素位置和图像大小)以及声音处理结合使用。

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

通过在简单变量而不是int使用byteshort ,不会实现任何空间节省,因为大多数Java实现在字边界上对齐堆栈变量和对象成员。 但是,原始数组类型的处理方式不同; 即booleanbytecharshort数组的元素是字节对齐的。 但除非arrays大小或数量庞大,否则它们对应用程序的整体内存使用量没有任何重大贡献。

所以我想,开发人员不使用byteshort主要原因(C开发人员?)可能会发现它确实没有太多(或通常是任何)差异。 Java开发人员往往不会像老式C开发人员那样过度考虑内存使用情况:-)。

在64位处理器中,寄存器都是64位,所以如果你的局部变量被分配给一个寄存器并且是一个布尔值,字节,短,char,int,float,double或long它不使用内存而且不是不保存任何资源。 对象是8字节对齐的,因此它们总是占用内存中8字节的倍数。 这意味着布尔,字节,短,字符,整数,长,浮点和双精度,AtomicBoolean,AtomicInteger,AtomicLong,AtomicReference都使用相同数量的内存。

如上所述,短类型用于数组和读/写数据格式。 即使这样短期也不经常使用恕我直言。

值得注意的是,GB在服务器上花费大约80英镑,因此MB大约为8便士,KB大约为0.008便士。 字节和长度之间的差异约为0.00006便士。 你的时间比那更值钱。 esp,如果你有一个因数据类型太小而导致的错误。

在处理二进制格式和DataInput / DataOutput实例时,我经常使用shortbyte类型。 如果规范说下一个值是8位或16位值并且没有将它们提升为int值(也许它们是位标志),那么它们是显而易见的选择。

byte s和short s的算术比使用int更麻烦。 例如,如果b1b2是两个byte变量,则不能写入byte b3 = b1 + b2来添加它们。 这是因为Java在任何小于int内部都不会进行算术运算,因此表达式b1 + b2类型为int即使它只添加了两个byte值。 你必须改写byte b3 = (byte) (b1 + b2)

在创建基于16位架构的仿真器时,我广泛使用了short 。 我考虑使用char所以我可以使用无符号的东西但是使用真正的整数类型的精神最终会胜出。

编辑:关于我在需要最重要的一点时所做的不可避免的问题:我正在仿效的事情几乎从未被使用过。 在它使用的少数几个地方,我只使用了按位修饰符或数学hackery。

我认为在大多数应用程序中,short没有域名含义,因此使用Integer更有意义。

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

short也用作JavaCard中的数组索引(1.0和2.0,IIRC,但不是3.0,它也有HTTP堆栈和Web服务)。

byte []一直在发生; 缓冲区,专门用于网络,文件,图形,序列化等。

大多数时候,开发人员(Java,C#,BASIC等)从来没有一个真正好的技术理由来决定int,short还是byte – 当然,当容量足够时。 如果该值将低于20亿,那么它将是。

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

不是32,767个可能的国家吗? 别想太小了!

在你的例子中,你可以非常满意你的字节变量包含100,如果你绝对肯定它永远不会溢出。 为什么人们最常使用int? 因为….因为。

这是我们大多数人刚才所做的事情之一,因为我们大部分时间都是这样看过的,而且从未有过不同的看法。

当然,我没有反对“所有事情”。 我只是喜欢为每种价值使用正确的类型,不涉及压力。