在真实应用程序中使用短和字节原始类型的人?

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

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

将post

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

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

我经常使用byte。 通常以字节数组或ByteBuffer的forms,用于二进制数据的网络通信。

我很少使用浮动或双重,我不认为我曾经使用过短。

我使用’byte’,在C / C ++代码中实现图像压缩等function(即在黑白位图的每个字节上运行压缩算法),并处理二进制网络消息(通过解释消息中的字节) )。

但是我几乎从未使用过’浮动’或’双’。

我见过的主要用途是处理具有未知结构甚至没有真实结构的数据。 网络编程是前者的一个例子(无论是谁发送数据都知道它意味着什么,但你可能不知道),像256色(或灰度)图像的图像压缩就是后者的一个例子。

在我脑海中浮现grep作为另一种用途,与任何类型的文件复制一样。 (当然,操作系统会这样做 – 但有时这还不够好。)

Java语言本身使得使用byteshort类型变得不合理。 无论何时对byteshort值执行任何操作,Java都会首先将其提升为int ,并将操作结果作为int返回。 此外,它们已经签名,并且没有未签名的等价物,这是另一个常见的挫败感。

因此,你最终会使用byte因为它仍然是所有网络的基本构建块,但short类型可能也不存在。

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

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

短? 几乎从不。

长? 都不是。

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

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

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

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

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

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

看一下int的语义可能更有趣。 那些任意限制和无声截断你想要什么? 对于应用程序级代码,实际上需要任意大小的整数,只是Java无法合理地表达它们。

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

我发现在进行一些低级图像处理时我正在使用字节变量。 .Net GDI +绘制例程非常慢,所以我亲自动手。

但是,大多数情况下,我坚持使用有符号整数,除非我被迫使用更大的东西,考虑到问题的限制。 我做的任何物理建模通常都需要浮点数或双精度,即使我不需要精度。

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

几个月前他们换成了int替换

createCell(short columnIndex)

createCell(int column) 。

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

因此,使用小占用空间来创建密钥非常重要,尤其是在处理非常大的数据集时。 对于入门值,当你可以使用适当的类型和更小的内存占用时…

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

byte s和short s广泛用于Java Card开发。 看一下我对Java字节原始类型有任何实际用途的答案吗? 。