11

自 2004 年以来,我一直在使用 Java 进行编程,主要是企业和 Web 应用程序。但我从来没有使用过shortbyte,除了一个玩具程序只是为了了解这些类型是如何工作的。即使在 100 次的for 循环中,我们通常也会使用int。而且我不记得我是否遇到过任何使用byteshort的代码,除了一些公共 API 和框架。

是的,我知道,在内存节省实际上很重要的情况下,您可以使用字节或字节来节省大型数组中的内存。有人愿意练习吗?或者它只是书中的东西。

[已编辑]

使用字节数组进行网络编程和套接字通信是一种很常见的用法。谢谢,达伦,指出这一点。现在呢?瑞安,举了一个很好的例子。谢谢,瑞恩。

4

15 回答 15

11

我经常使用字节。通常采用字节数组或 ByteBuffer 的形式,用于二进制数据的网络通信。

我很少使用 float 或 double,而且我认为我从未使用过 short。

于 2008-12-31T03:57:18.790 回答
8

请记住,Java 也用于内存更有限的移动设备。

于 2008-12-31T03:42:08.023 回答
4

我在 C/C++ 代码中使用了很多“字节”来实现图像压缩等功能(即在黑白位图的每个字节上运行压缩算法)和处理二进制网络消息(通过解释消息中的字节) )。

但是,我几乎从未使用过“float”或“double”。

于 2008-12-31T03:49:43.407 回答
4

我看到它们的主要用途是在处理具有未知结构甚至没有真实结构的数据时。网络编程是前者的一个例子(发送数据的人都知道它的含义,但你可能不知道),像 256 色(或灰度)图像的图像压缩是后者的一个例子。

我突然想到 grep 作为另一种用途,任何类型的文件副本也是如此。(当然,操作系统会这样做——但有时这还不够好。)

于 2008-12-31T05:08:10.830 回答
4

Java 语言本身使得使用byteorshort类型变得异常困难。每当您对 a byteorshort值执行任何操作时,Java 都会将其提升为intfirst,并且操作的结果作为int. 此外,它们已签名,并且没有未签名的等价物,这是另一个常见的挫折来源。

所以你最终会使用byte很多,因为它仍然是所有网络事物的基本构建块,但这种short类型可能不存在。

于 2008-12-31T05:51:18.700 回答
3

直到今天我还没有注意到我很少使用它们。

我已经将字节用于网络相关的东西,但大多数时候它们是用于我自己的工具/学习的。在工作项目中,这些事情由框架(例如 JSP)处理

短的?几乎从不。

长的?两者都不。

我首选的整数文字总是 int、for 循环、计数器等。

当数据来自另一个地方(例如数据库)时,我使用正确的类型,但对于文字,我总是使用 int。

于 2008-12-31T06:05:24.147 回答
3

我在很多不同的地方使用字节,主要涉及低级数据处理。不幸的是,Java 语言的设计者对字节进行了签名。我想不出任何使用负字节值的情况。拥有 0-255 范围会更有帮助。

我认为我从未在任何适当的代码中使用过短裤。我也从不使用浮点数(如果我需要浮点值,我总是使用双精度)。

我同意汤姆。理想情况下,在高级语言中,我们不应该关心底层的机器表示。我们应该能够定义自己的范围或使用任意精度的数字。

于 2008-12-31T14:53:54.533 回答
3

当我们为手机等电子设备编程时,我们使用字节和短。在这种情况下,我们应该注意内存管理。

于 2009-01-18T14:23:32.077 回答
2

看看 int 的语义可能更有趣。这些任意限制和静默截断是您想要的吗?对于真正想要任意大小的整数的应用程序级代码,只是 Java 无法合理地表达这些。

于 2008-12-31T14:16:09.103 回答
1

我在进行模型检查时保存状态时使用了字节。在该应用程序中,节省的空间值得额外的工作。否则我从不使用它们。

于 2008-12-31T04:47:15.477 回答
1

我发现我在进行一些低级图像处理时使用了字节变量。.Net GDI+ 绘制程序真的很慢,所以我自己动手。

不过,大多数时候,我坚持使用有符号整数,除非考虑到问题的限制,我不得不使用更大的整数。我所做的任何类型的物理建模通常都需要浮点数或双精度数,即使我不需要精度。

于 2008-12-31T05:16:50.377 回答
1

Apache POI使用short了很多次。可能是因为 Excel 的行/列数限制。

几个月前,他们改为int更换

createCell(短列索引)

createCell(int 列)

于 2008-12-31T08:31:29.237 回答
1

在内存数据网格上,它可能很有用。像 Gemfire 这样的数据网格的概念是拥有一个巨大的分布式地图。当您没有足够的内存时,您可以使用 LRU 策略溢出到磁盘,但您的地图所有条目的键都保留在内存中(至少使用 Gemfire)。

因此,使您的密钥占用空间小非常重要,尤其是在您处理非常大的数据集时。对于条目值,如果可以的话,最好使用内存占用少的适当类型......

于 2012-05-18T08:57:25.363 回答
1

我在与自定义 USB 或串行微控制器通信的 Java 应用程序中使用了短裤和字节,以接收包装在 2 个字节中的 10 位值作为短裤。

于 2015-04-13T06:59:03.567 回答
0

bytes 和shorts 广泛用于 Java Card 开发。看看我对 Java 字节原始类型是否有任何实际用途的回答?.

于 2012-05-22T04:08:50.167 回答