Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/341.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java中的“byte”类型_Java_Arrays_Byte - Fatal编程技术网

Java中的“byte”类型

Java中的“byte”类型,java,arrays,byte,Java,Arrays,Byte,可能重复: 我正在尝试创建一个大小为“1”的字节数组,其中包含字节0x0。在Java中,我可以这样做吗: byte[] space = new byte[1]; space[0] = 0x0; 十六进制值0x0是否会转换为其字节代表00000000,并将其存储在空间[0]中?是,这将完全执行您认为它应该执行的操作。也看到这个 十六进制值0x0是否会转换为其字节代表00000000并存储在空间[0]中 在您的执行程序中,Java字节值0只有一种表示形式,即8位2的整数0-8位的补码表示形式 在

可能重复:

我正在尝试创建一个大小为“1”的字节数组,其中包含字节0x0。在Java中,我可以这样做吗:

byte[] space = new byte[1];
space[0] = 0x0;

十六进制值0x0是否会转换为其字节代表00000000,并将其存储在空间[0]中?

是,这将完全执行您认为它应该执行的操作。也看到这个

十六进制值0x0是否会转换为其字节代表00000000并存储在空间[0]中

在您的执行程序中,Java字节值0只有一种表示形式,即8位2的整数0-8位的补码表示形式

在源代码中将数字文字表示为0十进制、00八进制或0x0没有任何区别。它们的意思完全一样

所以-是的,您的代码实现了您的期望

一个简单的单线版本是:

byte[] space = new byte[] {0};

甚至

byte[] space = new byte[1];
最后一个依赖于Java字节数组默认初始化为全零这一事实

十六进制值0x0是否会转换为其字节代表00000000并存储在空间[0]中

是的。技术上,即根据JLS,发生的情况是:

0x0变为整型文字。在这一点上,用于整数文本的特定语法实际上是无关紧要的。。。只要它是有效的。 使用隐式原语缩小到字节值的转换缩小int文本。 字节值用于数组的初始化。 步骤2中的隐式变窄是允许的,因为:

这是在作业上下文中。 指定的值是整数类型的编译时常量表达式。文本是编译时常量表达式。 指定的实际值在要指定的类型范围内。在这种情况下,-128到+127。
用外行的话说,编译器知道在缩小转换过程中永远不会丢失任何信息。

Java因为任何编程语言都是关于值的,而不是关于表示的。我确信你的大多数先入之见都是错误的;可能是这里最好的。我想问题是0x0是否是OP认为的…@RomanB-嗯。。。在不知道OP实际认为0x0是什么的情况下,很难回答这个问题:-
byte[] space = new byte[1];