byte[] arr=new byte[]{97,98,99};
String s=new String(arr);
System.out.println(s);
这个应该输出abc,因为97 98 99分别是abc的ascii
如果你要输出97,98,99
应该是
byte[] arr=new byte[]{97,98,99};
for (byte s : arr)
System.out.println(s);
该回答引用自ChatGPT:在 Java 中,当你使用 new String(byte[]) 构造函数将字节数组转换为字符串时,它会将字节数组中的每个字节解释为字符的 UTF-8 编码值,并将其转换为相应的字符。因此,输出的结果不是字节的数值,而是根据 UTF-8 编码对应的字符。
在你的例子中,字节数组 byte[] arr = new byte[]{97, 98, 99}; 中的每个字节分别对应字符编码的 ASCII 值,即 97 对应 'a',98 对应 'b',99 对应 'c'。因此,当你将字节数组转换为字符串并输出时,输出的结果将是字符串 "abc" 而不是 "97, 98, 99"。
如果你希望输出字节的数值而不是字符,你可以使用 Arrays.toString() 方法将字节数组转换为字符串,并使用逗号分隔每个字节的值,如下所示:
byte[] arr = new byte[]{97, 98, 99};
String s = Arrays.toString(arr);
System.out.println(s); // 输出 [97, 98, 99]
这样,你将会得到期望的结果 "[97, 98, 99]",其中每个字节的数值以逗号分隔。