没有'ln'的字符串的System.out.print

时间:2014-03-19 02:17:58

标签: java arrays string system.out

我有一个字节数组,如下所示:

[0, 0, 0, 0, 0, 0, 0, 0, 122, 98, 117, 54, 46, 0, 0, 115, 122, 42, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 116, 121, 116, 117, 108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 107, 111, 98, 105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 122, 42, 109, 111, 119, 40, 0, 0, 0, 0, 0, 0, 107, 111, 98, 0, 0, 0, 0, 0, 98, 111, 40]

我想将其打印为字符串,因此我编写了以下代码:

System.out.println(new String(byteArray));

但没有输出。接下来,我尝试了以下代码:

for(byte b: byteArray){
 System.out.print((char) b);
}

但又没有输出。但是当我尝试以下代码时:

for(byte b: byteArray){
 System.out.println((char) b);
}

我能够看到价值观。

我的问题是,为什么我不能创建字符串或为什么第一次打印byteArray的值失败?

4 个答案:

答案 0 :(得分:0)

试试这个

System.out.println(Arrays.toString(byteArray));

答案 1 :(得分:0)

试试这个。

byte[] bytes = new byte[]{0, 0, 0, 0, 0, 0, 0, 0, 122, 98, 117, 54, 46, 0, 0, 115, 122, 42, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 116, 121, 116, 117, 108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 107, 111, 98, 105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 122, 42, 109, 111, 119, 40, 0, 0, 0, 0, 0, 0, 107, 111, 98, 0, 0, 0, 0, 0, 98, 111, 40};
System.out.println(new String(bytes));

答案 2 :(得分:0)

您的字节数组主要是不可打印的字符,其中混合了几个随机字母。 但你需要的只是

String myString = new String(byteArray);

将为您提供有效的字符串。

尝试以下代码,因为它可能会更好地说明您遇到的问题。

 for (char c : new String(byteArray).toCharArray())
  {
     System.out.printf("Character: %s Hex: %02x \r",c,(int)c);
  }

答案 3 :(得分:0)

您可以使用 String(byte[],Charset) 构造函数并指定一个 Charset 用于解码此 bytes 数组:

System.out.println(new String(byteArray, StandardCharsets.UTF_8));

在大多数情况下,StandardCharsets.UTF_8 是默认字符集。