Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/398.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 不带';ln';_Java_Arrays_String_System.out - Fatal编程技术网

Java 不带';ln';

Java 不带';ln';,java,arrays,string,system.out,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, 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(新字符串(byteArray));
但没有产出。接下来,我尝试了以下代码:

for(字节b:byteArray){
系统输出打印((字符)b);
}
但同样没有产出。但当我尝试以下代码时:

for(字节b:byteArray){
System.out.println((char)b);
}
我能够看到这些价值观

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

试试这个

System.out.println(Arrays.toString(byteArray));
试试这个

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));

字节数组主要是不可打印的字符,其中混合了一些随机字母。但你所需要的是:

String myString=新字符串(byteArray);
这将为您提供一个有效字符串

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

for(字符c:新字符串(byteArray).toCharArray()){
System.out.printf(“字符:%s十六进制:%02x\n”,c,(int)c);
}
您可以使用构造函数并指定用于解码此
字节数组的

System.out.println(新字符串(byteArray,StandardCharsets.UTF_8));

在大多数情况下,是一个默认字符集。

不,对我来说都很好…好吧,它们在我的计算机上都给出了相同的结果。。唯一的区别是
ln
给了我很多行。你在任何地方调用过
System.setOut()
吗?添加
System.out.flush()
有帮助吗?我想把我的字节数组转换成字符。但是在使用了你的建议之后,在你的澄清之后,我的回答似乎没有任何变化,希望能为你解决这个问题。