当前位置: 首页 > 面试题库 >

Java字节基元类型在现实中有什么用途?

孔梓
2023-03-14
问题内容

由于某些无法解释的原因,byte原始类型是用Java签名的。这意味着有效值为-128..127,而不是通常的0..255范围,该范围表示一个字节中的8个有效位(无符号位)。

这意味着所有字节操作代码通常都会进行整数计算并最终掩盖最后8位。

我想知道是否有 任何 其中的Java真实的生活场景byte基本类型完全吻合,或者如果它仅仅是一个完全无用的设计决策?

编辑:唯一的实际用例是本机代码的单字节占位符。换句话说,不要在Java代码中将其作为字节操作。

编辑:我现在已经看到了一个内部紧密循环需要除以7(数字0..32)的地方,因此可以使用字节作为数据类型来完成查找表,因此可以将内存使用率保持在较低水平,以考虑L1缓存的使用。这不是指有符号/无符号,而是实际用法。


问题答案:

令人惊讶的是,我byte上周第一次使用Java,所以确实有一个(尽管不寻常的)用例。我正在编写一个本机Java函数,该函数使您可以在Java可以调用的库中实现一个函数。Java类型需要转换为本地语言类型,在这种情况下为C

函数需要采用字节数组,但是(当时byte完全忘记了类型)我采用了char[]。Java为C函数生成的签名将参数的类型指定为jcharArray,可以将其转换为一堆jchars,将其类型定义jni.hunsigned short。自然地,它的大小是不一样的-
它是2个字节而不是1个字节。这引起了基础代码的各种问题。使Java类型byte[]产生jbyteArray,然后jbyte在Linux上将typedef定义为signed char,这是正确的大小



 类似资料:
  • 我正在使用Java,我正在尝试调查和学习健康市场科学的sqlBuilder源代码。您可以通过添加此maven依赖项来获取源代码。 文件BaseCreateQuery。类具有以下代码 我想知道这个类型(在第1行)是什么意思。这与Java中的泛型有关吗。我研究了Java中的泛型,但没有找到对这种类型的引用。TypeScript具有ThisType构造。这类似于Java中的这种类型吗?

  • 问题内容: 这是过去的考试问题,我想知道什么是原始类型和引用类型?对于数组,我知道引用类型是由对象或变量组成的数组,而原始类型是仅使用int或字符串创建数组的类型。(对?) 您认为您会如何回答测试中的问题并获得良好的信誉?如果没有真正直接引用原始的ARRAY类型,有没有办法做到这一点?还是您只用数组解释一下就可以了。 问题答案: 这些是Java中的原始类型: boolean byte short

  • 下面是错误指定的错误示例。我应该如何修复它,为什么我得到一个错误?

  • 短可以容纳值最大16位 但我还没有看到有人使用shor Primitive take。当我确信该值适合32位时,是否应该鼓励使用它。例如:-我通常也将常量视为值1的int。是这样吗? 字节 我不确定使用byte var1=3这样的byte基元数据类型可能需要什么样的场景; 同样,当开发人员必须使用十六进制值时,不确定什么是有效的场景

  • 问题内容: 为什么Java编译器不会让我把成,是8位长,而这正大小的数据类型。 有人可以解释为什么1有效,为什么2不有效吗? 编辑 我读了答案,声称0xff是255,怎么办?不是吗,是什么导致0xff,-128或255或其他原因。为什么不将其视为字节,而不是将该字节的8位视为1。 问题答案: 在Java 类型是一个8位有符号整数类型与在范围内的值来。文字表示哪个超出了该范围。 在第一个示例中,您试