java中的新字符串(字节[])、String.valueOf(字节[])、Arrays.toString(字节[])和任何其他toString方法

java中的新字符串(字节[])、String.valueOf(字节[])、Arrays.toString(字节[])和任何其他toString方法,java,arrays,string,Java,Arrays,String,在java中,如何将字节数组转换为内存大小完全相同的java 例如: byte[]byteArr=新字节[16]; byteArr[0]=0; byteArr[1]=1 如何将byteArr转换为具有16字节内存的字符串 根据java源代码的注释,新字符串(byte[])“可能不等于字节数组的长度”;String.valueOf(字节[])和Array.toString(字节[])似乎返回“,” 有没有其他方法我可以用 byte[] bytes = new byte[16]; bytes[0]

在java中,如何将字节数组转换为内存大小完全相同的java

例如:

byte[]byteArr=新字节[16];
byteArr[0]=0;
byteArr[1]=1

如何将byteArr转换为具有16字节内存的字符串

根据java源代码的注释,新字符串(byte[])“可能不等于字节数组的长度”;String.valueOf(字节[])和Array.toString(字节[])似乎返回“,”

有没有其他方法我可以用

byte[] bytes = new byte[16];
bytes[0] = 0;
bytes[1] = 1;
String test = new String(bytes);
System.out.println(test.getBytes().length);

新字符串(byte[])
可以等于字节数组的长度,它们具有相同的字节数。

该注释指的是字符编码。如果您只需确保字节数组中的每个字节都代表平台默认字符集中的一个字符,则
String
将具有与字节数组相同的长度。通过为字节分配0和1,您不会将字符
01
放入字符串中。该怎么办?这取决于您真正想要获得的内容(长度为16的字符串,您最容易从
“0101010101010101”
)中获得)。为什么要这样做?你的更高目标是什么?@OleV.V。是的,我很蠢,我不是故意要打印“01”。我的意思是,如果它可以返回类似字节[0]字节[1]的内容,而不是字节[0],字节[1]。是的,new String()返回相同的长度,我认为这意味着相同的内存大小。你应该先试试再问。谢谢你,我还不明白你到底想得到什么。长度为16的字符串?由长度为16的数组支持的长度为2的字符串??我认为你是对的。它返回16。这可能意味着相同的内存大小。非常感谢。这可能只是单词用法的不同:字符串
不包含字节,它包含字符,每个字符占用2个字节。因此,相同的长度并不意味着相同的字节数。他们说,在未来的Java版本中,可能会包括更高效地存储仅包含拉丁-1范围字符的字符串,不过,将每个字符存储在一个字节中。