java new String 中有错误吗

is there a bug in java new String

我试试这个代码:

byte[] data = new byte[66000];
int count = is.read(data);
String sRequest = new String(data);  //will received byte array hello
String all = sRequest;        
all = all.concat("world");
System.out.println(all);

它只打印到我的控制台:你好

concat java 函数有bug?我还使用 + 运算符代替 concat 函数,但结果相同:( 我如何将一个字符串与字节数组中的新字符串连接起来?

而不是

    String sRequest = new String(data);  //will received byte array hello

使用

    String sRequest = new String(data, 0, count);  //will received byte array hello

当你额外打印结果字符串的长度时,你会注意到不同之处:

    System.err.println(all + "/" + all.length());

在第一种情况下给出 helloworld/66005,在第二种情况下给出 helloworld/10。您只看到 "hello" 的原因可能是您的控制台问题 - 在 Eclipse 中,我确实看到 "helloworld" 但是当我将其复制并粘贴到另一个编辑器中时,只使用了一个单词。来自初始数组的 0 值是结果的一部分(因为它们已经被添加到第一个字符串),但它们没有被打印出来(因为它们不是可打印字符)。