由于一些莫名其妙的原因,byte原始类型是用Java签名的.这意味着有效值为-128..127而不是通常的0..255范围,表示一个字节中的8个有效位(没有符号位).
这意味着所有字节操作代码通常进行整数计算并最终屏蔽掉最后8位.
我想知道是否存在任何真实生活场景,其中Java byte原始类型完全适合,或者它是否只是一个完全无用的设计决策?
编辑:唯一的实际用例是本机代码的单字节占位符.换句话说,不要将其作为Java代码中的字节进行操作.
编辑:我现在已经看到一个内部紧密循环需要除以7(数字0..32)的位置,因此可以使用字节作为数据类型来完成查找表,以便考虑L1缓存使用时内存使用率保持较低.这不是指签名/无签名,而是实际使用的情况.
为什么我不经常看到它们.我只看到它们主要用于网络,其中大小确实很重要.但是,例如,我有一个仅使用1-10范围内的数字的变量,我不应该使用字节吗?我习惯使用尽可能小的内存来编写C/C++,为什么不是这样在java中呢?